آیا میدانید شما میتوانید به صورت "کاملا رایگان" سایت ، محصول خدمات و... خود را در پی سی وب معرفی کنید ؟

فرصت را از دست ندهید
انجمن مه سفر
نمایش نتایج: از 1 به 1 از 1

موضوع: آموزش فعال کردن نمایش کلمات کلیدی در custom post_type وردپرس

  1. P30web آواتار ها
    P30web
    مدیر کل سایت
    علیرضا احمدی
    Oct 2015
    وب پارسی
    8,323
    7834
    1,793
    5,373
    36

    آموزش فعال کردن نمایش کلمات کلیدی در custom post_type وردپرس

    سلام

    اگر با custom post type وردپرس کار کرده باشید ، میدونید که یکی از قوی ترین ایتم های وردپرس این بخش هست ، شما میتووانید نمونه ای از پلاگین easy Digital download رو با custom post type وردپرس بسیازید ، و شاید جالب باشه بدونید که کلا این پلاگین هم برهمین اساس نوشته شده است .

    اخیرا داشتم فروشگاهی رو با همین سیستم می نوشتم . متاسفانه منابع فارسی ما در زمینه مباحث برنامه نویسی وردپرس بسیار محدود هست . این رو زمانی که یک وب مستر یا Front - end wodrdpress باشید متوجه نمیشید . بلکه اگر بخواهید در سطح Back end در وردپرس کار کنید ، این موضوع رو واقعا احساس میکنید .

    آموزش نصب وردپرس رو اگر سرچ کنید ، 2000 منبع فارسی پیدا میکنید که در رابطه با نصب وردپرس توضیح داده اند اما وقتی سرچ میکنید Custom post type منابع علمی که واقعا این موضوع رو اموزش داده باشند بسیار محدود هست . و توی خیلی از مباحثش اصلا اموزشی نیست .

    مثلا این حدود هسته چیزی بود که قبلا نوشته بودم ، براتون قرار میدهم که اگر خواستید شما هم استفاده کنید :

    کد PHP:

    add_action
    'init''cptui_register_my_cpts_product' );
    function 
    cptui_register_my_cpts_product() {
        
    $labels = array(
            
    "name" => __'Product''' ),
            
    "singular_name" => __'Product''' ),
            
    "menu_name" => __'محصولات''' ),
            
    "all_items" => __'همه محصولات''' ),
            
    "add_new" => __'افزودن محصول جدید''' ),
            
    "add_new_item" => __'افزودن محصول جدید''' ),
            
    "edit_item" => __'ویرایش محصول''' ),
            
    "new_item" => __'محصول جدید''' ),
            
    "view_item" => __'مشاهده محصول''' ),
            
    "search_items" => __'جستجو در محصولات''' ),
            
    "not_found" => __'محصول مورد نظر یافت نشد''' ),
            
    "not_found_in_trash" => __'محصول مورد نظر یافت نشد''' ),
            
    "parent_item_colon" => __'پدر محصولات''' ),
            
    "featured_image" => __'تصویر محصول''' ),
            
    "set_featured_image" => __'تصویر محصول''' ),
            
    "remove_featured_image" => __'حذف تصویر محصول''' ),
            
    "use_featured_image" => __'استفاده از تصویر محصولات''' ),
            
    "archives" => __'بایگانی محصولات''' ),
            
    "insert_into_item" => __'افزودن به این ایتم''' ),
            
    "uploaded_to_this_item" => __'اپلود کردن تصاویر محصولات''' ),
            
    "filter_items_list" => __'فیلتر فهرست محصولات''' ),
            
    "items_list_navigation" => __'لیست محصولات''' ),
            
    "items_list" => __'لیست محصولات''' ),
            
    "parent_item_colon" => __'پدر محصولات''' ),
            );

        
    $args = array(
            
    "label" => __'Product''' ),
            
    "labels" => $labels,
            
    "description" => "این بخش برای محصولات سایت می باشد . ",
            
    "public" => true,
            
    "publicly_queryable" => true,
            
    "show_ui" => true,
            
    "show_in_rest" => false,
            
    "rest_base" => "",
            
    "has_archive" => true,
            
    "show_in_menu" => true,
                    
    "exclude_from_search" => true,
            
    "capability_type" => "post",
            
    "map_meta_cap" => true,
            
    "hierarchical" => false,
            
    "rewrite" => array( "slug" => "product""with_front" => true ),
            
    "query_var" => true,
            
    "menu_position" => 6,"menu_icon" => "dashicons-cart",
            
    "supports" => array( "title""editor""thumbnail""custom-fields""comments" ),        
            
    "taxonomies" => array( "post_tag""pcat" ),
                );
        
    register_post_type"product"$args );

    // End of cptui_register_my_cpts_product()

    اکثر سایت ها اومدن گفتن که چی کار کنید یه همچین چیزی رو بنویسید ، در صورتی که همین custom post تکنیک هایی داره که شما میتوانید خیلی ساده همین کد رو تولید کنید . مثلا میشه با افزونه هایی که در این زمینه هست در کمتر از 2 دقیقه یه همچین چیزی رو نوشت . ولی محال شما بتونید برای اولین بار یه همچین کد سنگینی رو در 2 دقیقه بتونید بنویسید .

    استفاده از پلاگین برای تولید یه همچین کدی یه تکنیک هست . که جایی اموزش داده نشده است . فقط در این حد میخواهم بگم ، که واقعا بعضی از مباحث برنامه نویسی وردپرس رو اگر بخواهید یاد بگیرید ، خیلی اذیت خواهید شد ومن ولی سعی میکنم تجربیاتم رو در زمینه های مختلف ، چیز هایی که وجود نداره در اختیارتون قرار بدهم . تا سختی ها و مشکلاتی که من داشتم رو شما نداشته باشید . یا حداقل سختی هاتون کمتر بشه .

    اما بریم سر موضوع اصلی مون :

    شما در کاستوم پست هر چیزی رو مثل بخش نوشته های وردپرس میتوانید داشته باشید . چه بسا میتوانید بخشی رو ایجاد کنید حرفه ای تر از بخش نوشته ها . ولی خوب دردسر شما از این جا شروع میشه که در رابطه با اکثر این موارد اموزش نیست و باید رفرنس های خارجی رو زیر رو کنید .

    من هم بضعا گاهی با چنین مسائلی درگیر هستم . تا به امروز برام پیش نیومده بود که بخواهم کلمات کلیدی رو در کاستوم پست تایپ فعال کنم . شاید تصور کنید بتوانید با چنین تکنیک هایی :

    کد HTML:
    archive-{$post_type}.php
    یا


    کد PHP:
    taxonomy-{$post_type}.php 
    یا

    کد PHP:
    category-{$post_type}.php 
    یا

    کد PHP:

    category
    -{$category->slug}.php 
    یا

    کد PHP:

    category
    -{$category->term_id}.php 
    یا

    کد PHP:
    tags-{$post_type}.php 
    این کار انجام بدید . تا حدودی این نظریه درست هست و تا حدودی اشتباه . دلیل اشتباه بودن این هست که چنین ساختاری به صورت پیشفرض برای این بخش تعریف نشده و اگر شما بخواهید از اون ساختار ها استفاده کنید باید تعریف کنید . و از

    کد HTML:
    category_template
    میتونید استفاده کنید ولی خوب کارتون سخت خواهد بود .

    من یه راه حل ساده تر پیدا کردم و اون هم این هست که این قطعه کد رو به اخر فانکشن بیاییم ، اضافه کنیم :

    کد PHP:

    add_action
    'pre_get_posts', function ( $q )
    {
        if (    !
    is_admin()         // Only target front pages
             
    && $q->is_main_query() // Only target the main query
             
    && (    $q->is_category() // Target category archives OR
                  
    || $q->is_tag()      // Target tag achives OR
                  
    || $q->is_home()     // Target the home page
                
    )
        ) {
            
    $q->set'post_type', ['post''product'] );
        }
    }); 
    به جای مثلا product میتوایند کاستوم پست تایپ خودتون رو وارد کنید و به همین راحتی این اینم هم فعال میشه . شاید راه حل های دیگه هم داشته باشه . که اگر پیدا کنم ، معرفی میکنم . یا اگر راه حل خاصی سراغ دارید میتوانید معرفی کنید .

    و در نهایت امیدوارم مفید واقع شده باشد .
    موفقیت کلید شادی نیست، شادی کلید موفقیت است؛ اگر آنچه انجام می دهی دوست بداری، موفق خواهی بود.

    #1 ارسال شده در تاريخ 10-17-2016 در ساعت 08:48 PM

  2. کاربر مقابل پست P30web عزیز را پسندیده است .


اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

Designed With Cooperation

Of Creatively