سلام به همه رفقای فولاستک ووکامرسکار! آقا کوچولو دوباره برگشته با یه مبحث داغ و بهدردبخور که کمتر کسی بهش اینقدر عمیق نگاه میکنه: مدیریت هوکها (Hooks) و فیلترهای (Filters) ووکامرس. بچهها دقت کنید، ووکامرس یه پلتفرم فوقالعاده قدرتمنده، اما پتانسیل واقعی اون وقتی آزاد میشه که بتونید با کدنویسی، رفتار پیشفرضش رو بهینه و شخصیسازی کنید. این کار رو نه با پلاگینهای سنگین، بلکه با همین هوکها و فیلترها انجام میدیم که قلب تپنده وردپرس و ووکامرس هستن.
من توی پروژههام بارها دیدم که خیلیها فقط به تنظیمات ظاهری ووکامرس بسنده میکنن، غافل از اینکه فوت کوزهگری اصلی توی همین هوکهاست. با کنترل صحیح این مکانیسم، میتونید سایتتون رو هم برای گوگل دلربا کنید و هم برای کاربر تجربهای بینظیر بسازید.
هوکها و فیلترها در ووکامرس: چرا اینقدر حیاتیان؟
قبل از اینکه غرق کدهای جذاب بشیم، بذارید یه توضیح سریع بدم. هوکها در وردپرس (و ووکامرس که روی وردپرس ساخته شده) دو نوع اصلی دارن:
- اکشنها (Actions): اینها جاهایی هستن که شما میتونید کد خودتون رو اجرا کنید، بدون اینکه خروجی اصلی رو تغییر بدید. مثلاً بعد از ذخیره یه محصول، یا قبل از نمایش یه دکمه.
- فیلترها (Filters): اینها جاهایی هستن که شما میتونید دادههای موجود رو قبل از اینکه نمایش داده بشن یا ذخیره بشن، تغییر بدید. مثلاً عنوان محصول، قیمت، یا محتوای ایمیل.
مهم اینه که بدونید، استفاده از هوکها به شما این امکان رو میده که بدون دستکاری مستقیم فایلهای اصلی ووکامرس، تغییرات مورد نظرتون رو اعمال کنید. این یعنی سایت شما در مقابل آپدیتهای آینده ووکامرس مقاوم خواهد بود و دردسرهای کمتری خواهید داشت. این یک اصل کلیدی در شخصیسازی عمیق قالب وردپرس با کدهای تمیز و رویکرد فولاستک هستش.
۱. بهینهسازی سئو با هوکهای ووکامرس: دادههای ساختاریافته و محتوای پویا
رفقا، سئو فقط مربوط به کلمات کلیدی نیست. گوگل عاشق دادههای ساختاریافته و محتوای باکیفیته. با هوکهای ووکامرس، میتونید این موارد رو به بهترین شکل مدیریت کنید:
۱.۱. افزودن و ویرایش دادههای ساختاریافته (Schema Markup) محصول
ووکامرس به صورت پیشفرض اسکیما رو اضافه میکنه، اما ممکنه نیاز داشته باشید اطلاعات بیشتری اضافه کنید یا اطلاعات موجود رو تغییر بدید. مثلاً اضافه کردن فیلد gtin8 یا mpn که برای سئو محصولات بسیار مهمن.
function custom_woocommerce_product_schema( $markup, $product ) {
if ( ! is_a( $product, 'WC_Product' ) ) {
return $markup;
}
// Example: Add MPN if it's a custom field
$mpn = $product->get_meta('_custom_mpn_field'); // Assuming you have a custom field for MPN
if ( $mpn ) {
$markup['mpn'] = $mpn;
}
// Example: Override description if needed
// $markup['description'] = 'Our enhanced product description for ' . $product->get_name();
return $markup;
}
add_filter( 'woocommerce_structured_data_product', 'custom_woocommerce_product_schema', 10, 2 );
فوت کوزهگری: با این فیلتر، میتونید مطمئن بشید که اطلاعات دقیق و کاملی از محصولتون به گوگل ارسال میشه، که میتونه در نتایج جستجو و ریچ اسنیپتها تاثیر چشمگیری داشته باشه. برای عمیقتر شدن در این مبحث، مطالعه توسعه پیشرفته دادههای ساختاریافته در وردپرس رو بهتون پیشنهاد میکنم.
۱.۲. بهینهسازی عنوان و توضیحات متا برای صفحات محصول
اغلب اوقات، عنوان و توضیحات متا به صورت دینامیک تولید میشن. شما میتونید با فیلترها، این موارد رو دقیقتر کنترل کنید:
function custom_woocommerce_seo_title( $title ) {
if ( is_product() ) {
global $product;
if ( $product ) {
$product_name = $product->get_name();
$category_name = wc_get_product_category_list( $product->get_id(), ', ', '', '' );
return $product_name . ' | خرید ' . $category_name . ' | سایت آقا کوچولو';
}
}
return $title;
}
add_filter( 'pre_get_document_title', 'custom_woocommerce_seo_title' );
function custom_woocommerce_seo_description( $description ) {
if ( is_product() ) {
global $post;
if ( $post ) {
$product_excerpt = wp_trim_words( $post->post_excerpt, 30, '...' );
return 'خرید ' . get_the_title() . ' با بهترین قیمت و کیفیت. ' . $product_excerpt;
}
}
return $description;
}
add_filter( 'wpseo_metadesc', 'custom_woocommerce_seo_description' ); // For Yoast SEO
// If using Rank Math: add_filter( 'rank_math/frontend/description', 'custom_woocommerce_seo_description' );
تجربه آقا کوچولو: بچهها، استفاده از پلاگینهای سئو مثل Yoast یا Rank Math عالیه، اما گاهی اوقات نیاز داریم فراتر از تنظیماتشون بریم. فیلترهایی مثل
wpseo_metadescبه ما این قدرت رو میدن که کنترل ۱۰۰ درصدی روی متادیسکریپشن داشته باشیم و کلمات کلیدی و عبارات مهم رو دقیقا جایی که میخوایم قرار بدیم.
۲. افزایش پرفورمنس با هوکهای ووکامرس: سبکتر و سریعتر
سرعت سایت، هم برای سئو و هم برای تجربه کاربری، فوقالعاده مهمه. ووکامرس به دلیل امکانات زیادش، میتونه سنگین بشه، اما هوکها به ما کمک میکنن جلوی این اتفاق رو بگیریم.
۲.۱. حذف اسکریپتها و استایلهای غیرضروری در صفحات خاص
ووکامرس بعضی اسکریپتها و استایلها رو در همه صفحات بارگذاری میکنه، حتی اگه لازم نباشن. این راهنمای جامع بهینهسازی سرعت وبسایت وردپرسی و ووکامرسی رو قبلا توضیح دادم، اما با هوک میتونید دقیقتر عمل کنید.
function custom_dequeue_woocommerce_styles_scripts() {
if ( ! is_woocommerce() && ! is_cart() && ! is_checkout() && ! is_account_page() ) {
wp_dequeue_style( 'woocommerce-general' );
wp_dequeue_style( 'woocommerce-layout' );
wp_dequeue_style( 'woocommerce-smallscreen' );
wp_dequeue_style( 'woocommerce_frontend_styles' );
wp_dequeue_style( 'woocommerce_chosen_styles' );
wp_dequeue_style( 'wc-composite-frontend' ); // Example for a specific plugin style
wp_dequeue_script( 'wc-add-to-cart' );
wp_dequeue_script( 'jquery-blockui' );
wp_dequeue_script( 'jquery-cookie' );
wp_dequeue_script( 'woocommerce' );
wp_dequeue_script( 'wc-single-product' );
wp_dequeue_script( 'wc-cart-fragments' );
}
}
add_action( 'wp_enqueue_scripts', 'custom_dequeue_woocommerce_styles_scripts', 99 );
بچهها دقت کنید: این کد رو با احتیاط استفاده کنید! هر پلاگینی ممکنه به این اسکریپتها نیاز داشته باشه. همیشه بعد از اعمال، سایت رو تست کنید.
۲.۲. بهینهسازی کوئریهای دیتابیس (با استفاده از اکشنها/فیلترها)
گاهی اوقات، کوئریهای ووکامرس میتونن سنگین بشن. هرچند بهینهسازی عمیق ووکامرس: دیتابیس، کوئریها و اکشنهای کدنویسی به تفصیل به این موضوع پرداخته، اما با هوکها میتونید رفتار کوئریها رو تغییر بدید.
function custom_woocommerce_product_query( $query ) {
if ( is_shop() || is_product_category() || is_product_tag() ) {
// Example: Exclude out-of-stock products from main shop query
// This can improve performance on category/shop pages by reducing the number of results
$query->set( 'meta_query', array(
array(
'key' => '_stock_status',
'value' => 'outofstock',
'compare' => '!=',
),
) );
}
return $query;
}
add_filter( 'woocommerce_product_query', 'custom_woocommerce_product_query' );
فوت کوزهگری آقا کوچولو: استفاده از
woocommerce_product_queryیه ابزار فوقالعاده برای کنترل محصولاتیه که در صفحات آرشیو نشون داده میشن. با این کار میتونید هم پرفورمنس رو بالا ببرید و هم تجربه کاربری رو بهبود بدید، چون کاربر با محصولات ناموجود کمتری مواجه میشه.
۳. شخصیسازی بینظیر با هوکهای ووکامرس: فراتر از قالب
اوج قدرت هوکها در شخصیسازی بخشهای مختلف ووکامرسه. میتونید هر چیزی رو، از ظاهر محصول تا مراحل تسویهحساب، مطابق سلیقه و نیاز بیزینس خودتون تغییر بدید.
۳.۱. اضافه کردن فیلدهای دلخواه به صفحه محصول
گاهی اوقات نیاز دارید اطلاعات خاصی به محصولاتتون اضافه کنید که ووکامرس به صورت پیشفرض نداره. مثلاً یه فیلد برای تاریخ تولید یا گارانتی خاص.
// Add Custom Field to Product Data Tabs
function add_custom_product_data_field() {
echo '<div class="options_group">';
woocommerce_wp_text_input(
array(
'id' => '_custom_warranty_field',
'label' => __( 'مدت گارانتی (ماه)', 'textdomain' ),
'placeholder' => __( 'مثلاً ۱۲ ماه', 'textdomain' ),
'desc_tip' => 'true',
'description' => __( 'مدت زمان گارانتی محصول به ماه را وارد کنید.', 'textdomain' ),
'type' => 'number',
'custom_attributes' => array(
'step' => 'any',
'min' => '0'
)
)
);
echo '</div>';
}
add_action( 'woocommerce_product_options_general_product_data', 'add_custom_product_data_field' );
// Save Custom Field Value
function save_custom_product_data_field( $post_id ) {
$warranty_field = $_POST['_custom_warranty_field'] ?? '';
update_post_meta( $post_id, '_custom_warranty_field', sanitize_text_field( $warranty_field ) );
}
add_action( 'woocommerce_process_product_meta', 'save_custom_product_data_field' );
// Display Custom Field on Product Page (Frontend)
function display_custom_product_data_on_frontend() {
global $product;
$warranty = $product->get_meta('_custom_warranty_field');
if ( $warranty ) {
echo '<div class="custom-warranty-info"><strong>گارانتی:</strong> ' . esc_html( $warranty ) . ' ماه</div>';
}
}
add_action( 'woocommerce_single_product_summary', 'display_custom_product_data_on_frontend', 25 );
۳.۲. تغییر ترتیب یا حذف بخشها در صفحه محصول
با اکشنهای ووکامرس، میتونید به راحتی ترتیب نمایش اطلاعات رو تغییر بدید یا بخشهای غیرضروری رو حذف کنید. این یکی از مهمترین فوتوفنها برای طراحی رابط کاربری (UI) بهتره.
// Remove a specific section (e.g., product meta like SKU, categories, tags)
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40 );
// Change order: Move short description before title
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20 );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 5 );
کجا این کدها رو قرار بدیم؟
رفقا، همیشه این کدها رو در فایل functions.php قالب فرزند (Child Theme) خودتون قرار بدید. هرگز فایلهای اصلی قالب یا ووکامرس رو دستکاری نکنید، چون با هر آپدیت، تغییرات شما از بین میرن. اگر قالب فرزند ندارید، میتونید از یک پلاگین Code Snippets استفاده کنید که راه حلی امنتر برای مدیریت اینجور کدهاست. این روشها باعث میشن که مدیریت افزونههای وردپرس و کدهای شما حرفهایتر باشه.
جمعبندی آقا کوچولو
بچهها، مدیریت هوشمندانه هوکها و فیلترهای ووکامرس، تفاوت بین یه سایت معمولی و یه فروشگاه آنلاین فولاستک و حرفهای رو رقم میزنه. با این تکنیکها، نه تنها میتونید سایتتون رو برای سئو بهینه کنید، پرفورمنس رو به اوج برسونید و تجربه کاربری بینظیری خلق کنید، بلکه کنترل کاملی روی هر گوشه و کنار فروشگاهتون خواهید داشت.
رفقا، هیچ وقت از کدنویسی نترسید. این همون جادویی هست که شما رو از بقیه متمایز میکنه. با این فوتوفنها، ووکامرس شما دیگه یه پلتفرم ساده نیست، بلکه یه ماشین فروش قدرتمند و شخصیسازی شده است که آماده فتح قلههای گوگل و رضایت مشتریه!