دوره مجازی قالب وردپرس (جلسه 23): custom post type

دسته بندی: وردپرس
زمان مطالعه: ۱ دقیقه
۱۲ آبان ۱۳۹۴

به نام خدا و سلام. با قسمت 23 ام از دوره مجازی طراحی قالب وردپرس در خدمت شما هستیم. در این جلسه قراره باهم درباره custom post type ها صحبت کنیم. اول از همه درباره custom post type ها و فواید اون صحبت می کنیم و سپس نمونه ای از کد که وردپرس معرفی کرده رو بررسی می کنیم و آرگومان ها اون رو معرفی می کنیم  و سپس کد مورد نظر خودمون رو در قالب پیاده سازی می کنیم.

در این جلسه خواهیم دید :

  • معرفی custom post type
  • معرفی نمونه کد وردپرس
  • پیاده سازی custom post type در قالب
:: توجه

این مطلب یک جلسه از آموزش طراحی قالب وردپرس می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در آموزش طراحی قالب وردپرس

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

جلسات دوره

نظرات کاربران

محمدسجاد دباغ

سلام آقای علی محمدی
دوره بسیار خوبی بود سپاس گذارم
به یک مشکلی برخورد کردم و چندین بار بررسیش هم کردم اما ایراد کارم را متوجه نشدم.
من برای پست تایپ جدیدی که ایجاد کردم دوتا متاباکس ایجاد کردم با نام فاکشن و متغیر های متفاوت ( چک شده ) و هر کدام آن ها به تنهایی مقدار دیتا را به راحتی در دیتابیس ذخیره میکنه و نمایش میده اما وقتی هر دو را باهم روی یک پست تایپ فعال میکنم فقط اولین و بالاترین متاباکس طبق کد نویسی میتونه مقدار خودش رو دخیره کنه و دیگه اجازه نمیده مابقی متاباکس ها مقدار خودشون رو ذخیره کنند.
سپاس گذارم راهنمایی کنید. این مشکل در چند پست تایپ مختلف تست کردم و تفاوتی نداشت.

// meta box for side in team members
function teams_prices_metabox() {
    add_meta_box(‘teams_prices_metabox’,’Enter the Side’,’teams_prices_metabox_callback’,’team’,’normal’,’high’);
}
add_action( ‘add_meta_boxes’, ‘teams_prices_metabox’ );

function teams_prices_metabox_callback( $post ) {

    wp_nonce_field( ‘teams_prices_metabox_nonce’, ‘teams_prices_nonce’ ); ?>

    <form action="" method="post">

        <?php
        $side      = get_post_meta( $post->ID, ‘teams-Side’, true );
        ?>

        <p>
            <input type="text" name="teams_Side" value="<?php echo $side ?>" />
            <label for="teams_Side"><?php _e(‘Side’ ); ?></label><br/>
        </p>

    </form>

<?php }


function teams_prices_save_meta( $post_id ) {

    if( !isset( $_POST[‘teams_prices_nonce’] ) || !wp_verify_nonce( $_POST[‘teams_prices_nonce’],’teams_prices_metabox_nonce’) )
        return;

    if ( !current_user_can( ‘edit_post’, $post_id ))
        return;


    if ( isset($_POST[‘teams_Side’]) ) {
        update_post_meta($post_id, ‘teams-Side’, sanitize_text_field($_POST[‘teams_Side’]));
    }

}
add_action(‘save_post’, ‘teams_prices_save_meta’);


// meta box for links team members
function teams_links_prices_metabox() {
    add_meta_box(‘teams_links_prices_metabox’,’Enter the Links’,’teams_links_prices_metabox_callback’,’team’,’normal’,’high’);
}
add_action( ‘add_meta_boxes’, ‘teams_links_prices_metabox’ );

function teams_links_prices_metabox_callback( $post ) {

    wp_nonce_field( ‘teams_links_prices_metabox_nonce’, ‘teams_links_prices_nonce’ ); ?>

    <form action="" method="post">

        <?php
        $link_facebook      = get_post_meta( $post->ID, ‘link-facebook’, true );
        ?>

        <p>
            <input type="text" name="link_facebook" value="<?php echo $link_facebook ?>" />
            <label for="link_facebook"><?php _e(‘Side’ ); ?></label><br/>
        </p>

    </form>

<?php }


function teams_links_prices_save_meta( $post_id ) {

    if( !isset( $_POST[‘teams_links_prices_nonce’] ) || !wp_verify_nonce( $_POST[‘teams_links_prices_nonce’],’teams_links_prices_metabox_nonce’) )
        return;

    if ( !current_user_can( ‘edit_post’, $post_id ))
        return;


    if ( isset($_POST[‘link_facebook’]) ) {
        update_post_meta($post_id, ‘link-facebook’, sanitize_text_field($_POST[‘link_facebook’]));
    }

}
add_action(‘save_post’, ‘teams_links_prices_save_meta’);
کیوان علی محمدی

سلام. حتما این موارد رو بررسی کنید که نام فیلد ها با نام متادیتا و مقادیر ارسالی فرم صحیح باشه و بعد از اون هم ببینید آیا قبل از تابع update_post_meta مقادیر مورد نظر به درستی وجود داره یا نه.

Masoud Azimi

در مورد Custom postها یک سوال داشتم . برا توضیح سوالم خود سایت سون لرن رو مثال میزنم.
فرض کنیم دو نوع custom post داریم : به نام tutorials و course – من چطور میتونم دروسی رو که مربوط به پست سفارسی tutorials هستند رو زیر پست سفارسی course نشون بدم؟ با تشکر.

کیوان علی محمدی

سلام می تونید با استفاده از متاباکس های سفارشی این کارو انجام بدید.کافیه در زمان نمایش مطالب tutorials در در داخل اون متاباکس سفارشی یه کوئری بزنید و لیست courses رو دریافت کنید و نمایش بدید.

kayvan rahat

سلام وقت بخیر.
بیشتر توصیه میشه در یک پلاگین مجزا کدها نوشته بشه تا خطر خرابکاری بعد از آپدیت رفع بشه.
نظر شما؟؟

پایان زمان پشتیبانی

دانشجوی گرامی، بازه پشتیبانی فعال برای این دوره ۳ ماه است که برای شما به پایان رسیده است.

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

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.
گزارش مشکل