ShopAmericanRental.com
SEO-tuned e-commerce build with RSSS → Sheets → WordPress data pipeline.
WordPress developer, 3D designer, marketer, and musician. I blend technical SEO, clean builds, 3D visuals for architecture and products, and gamification so sites feel fast, human, and just a little bit fun.
I’m a full-stack web tinkerer with a growth mindset: custom WordPress builds, inventory/data integrations, and the kind of technical SEO that quietly makes everything perform better.
I also create 3D design work for architecture and websites—from product renders and interior concepts to tiny homes and custom hardware—so the digital experience actually matches what people see in the real world.
Real client work: performance-focused builds tied to business outcomes.
On-brand mechanics that drive engagement without feeling like a gimmick.
A few small slices of how I wire WordPress, data flows, and backend logic together.
Pulls only “featured” projects for the homepage, keeping the rest in the archive.
<?php
$args = [
'post_type' => 'project',
'posts_per_page' => 3,
'meta_key' => 'is_featured',
'meta_value' => '1',
];
$featured = new WP_Query( $args );
if ( $featured->have_posts() ) :
while ( $featured->have_posts() ) : $featured->the_post();
get_template_part( 'template-parts/content', 'project-card' );
endwhile;
wp_reset_postdata();
endif;
?>
Lightweight, DB-backed view counting using get_option / update_option.
<?php
function zs_increment_views( $key ) {
$count = (int) get_option( $key, 0 );
$count++;
update_option( $key, $count );
return $count;
}
// On a template:
$views = zs_increment_views( 'zs_home_views' );
echo 'Portfolio views: ' . number_format_i18n( $views );
?>
Processes a front-end form, sanitizes input, stores in a single option as an array.
<?php
function zs_handle_portfolio_feedback() {
check_admin_referer( 'zs_feedback' );
$rating = isset( $_POST['rating'] )
? sanitize_text_field( $_POST['rating'] )
: '';
$feedback = isset( $_POST['feedback'] )
? sanitize_textarea_field( $_POST['feedback'] )
: '';
$stored = get_option( 'zs_feedback', [] );
if ( ! is_array( $stored ) ) {
$stored = [];
}
$stored[] = [
'time' => current_time( 'mysql' ),
'rating' => $rating,
'feedback' => $feedback,
'ip' => $_SERVER['REMOTE_ADDR'] ?? '',
'user_agent' => $_SERVER['HTTP_USER_AGENT'] ?? '',
];
update_option( 'zs_feedback', $stored );
}
add_action( 'admin_post_nopriv_zs_feedback', 'zs_handle_portfolio_feedback' );
add_action( 'admin_post_zs_feedback', 'zs_handle_portfolio_feedback' );
?>
Simple custom endpoint to expose cleaned inventory data as JSON.
<?php
function zs_register_inventory_endpoint() {
add_rewrite_rule(
'^inventory-json/?$',
'index.php?zs_inventory_json=1',
'top'
);
}
add_action( 'init', 'zs_register_inventory_endpoint' );
function zs_inventory_query_var( $vars ) {
$vars[] = 'zs_inventory_json';
return $vars;
}
add_filter( 'query_vars', 'zs_inventory_query_var' );
function zs_inventory_template_redirect() {
if ( get_query_var( 'zs_inventory_json' ) ) {
$data = zs_get_inventory_data(); // custom parser
wp_send_json( $data );
}
}
add_action( 'template_redirect', 'zs_inventory_template_redirect' );
?>
CAD and 3D visualization work for architecture, products, and web experiences.
3D deck concept used to test graphics, shape, and lighting before production.
Parametric putter model rendered for marketing, fitting into golf course branding.
3D keyboard layout and lighting study for UI/UX hardware exploration.
Conceptual 3D shape exploration for motion, branding, and hero imagery.
Room layout and lighting pass for architectural visualization and web walkthroughs.
Decorative 3D wall piece designed for interior feature walls and hero shots.
3D wood joinery exploration used to communicate structure on product pages.
Framing & form concept for future builds and architectural storytelling.
Full tiny home 3D model used for planning layouts and web-based walk-throughs.
Classic Telecaster-style guitar modeled and rendered for music-focused pages.
A visual story layer—real shots, real light, one frame at a time.
No portfolio photos are configured yet. Use your Dashboard → Photography Management to build the list.