دنیای وردپرس

no-img

م
ن
و
دنیای وردپرس

ادامه مطلب

آموزش
نحوه تعیین تاریخ انقضا برای پست های وردپرس
آموزش
آذر 7, 1394

نحوه تعیین تاریخ انقضا برای پست های وردپرس


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

نحوه تعیین تاریخ انقضا برای پست های وردپرس

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

  1. ایجاد یک متا باکس در صفحه نوشته ها برای تعیین تاریخ انقضا
  2. اضافه کردن jQuery UI datepicker برای انتخاب تاریخ انقضا
  3. استفاده از pre_get_posts قبل از نمایش پست های وردپرس

آماده سازی : ابتدا وارد پوشه پلاگین های خود شوید که در مسیر wp-content قرار دارد و یک پوشه با نام دلخواه باز کنید به طور مثال : worldwp-post-expiry-date درون پوشه یک فایل خالی با نام worldwp-post-expiry-date.php باز کنید و کد های زیر را درون آن کپی کنید:

<?php
/*
Plugin Name: Add an Expiry Date to Posts
Plugin URI: http://worlwp.ir
Description: Adds an expiry date to posts, using a the jQuery UI datepicker
Author: farzad khaledi & alireza nejati
Version: 1.0
 */

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

function tutsplus_add_expiry_date_metabox() {
    add_meta_box( 
        'tutsplus_expiry_date_metabox', 
        __( 'Expiry Date', 'tutsplus'), 
        'tutsplus_expiry_date_metabox_callback', 
        'post', 
        'side', 
        'high'
    );
}
add_action( 'add_meta_boxes', 'tutsplus_add_expiry_date_metabox' );

با درج کدهای بالا در پلاگین خود یک متا باکس با نام Expiry Date در صفحه نوشته های وردپرس اضافه می شود. خوب قدم بعدی در نحوه تعیین تاریخ انقضا برای پست های وردپرس ساخت تابع tutsplus_expiry_date_metabox_callback برای نمایش محتوای متا باکس است برای این منظور کدهای زیر را بعد از کدهای بالا قرار دهید:

function tutsplus_expiry_date_metabox_callback( $post ) { ?>
     
    <form action="" method="post">
         
        <?php        
        // add nonce for security
        wp_nonce_field( 'tutsplus_expiry_date_metabox_nonce', 'tutsplus_nonce' );
         
        //retrieve metadata value if it exists
        $tutsplus_expiry_date = get_post_meta( $post->ID, 'expires', true );
        ?>
         
        <label for "tutsplus_expiry_date"><?php __('Expiry Date', 'tutsplus' ); ?></label>
                 
        <input type="text" class="MyDate" name="tutsplus_expiry_date" value=<?php echo esc_attr( $tutsplus_expiry_date ); ?> / >
         
        <script type="text/javascript">
            jQuery(document).ready(function() {
                jQuery('.MyDate').datepicker({
                    dateFormat : 'dd-mm-yy'
                });
            });
        </script>         
     
    </form>
     
<?php }

کد نویسی تابعی برای ذخیره سازی داده های متا باکس: برای ایجاد تابعی تاریخ انقضای پست های وردپرس کدهای زیر را در ادامه کدهای خود کپی کنید:

function tutsplus_save_expiry_date_meta( $post_id ) {
     
    // Check if the current user has permission to edit the post. */
    if ( !current_user_can( 'edit_post', $post->ID ) )
    return;
     
    if ( isset( $_POST['tutsplus_expiry_date'] ) ) {        
        $new_expiry_date = ( $_POST['tutsplus_expiry_date'] );
        update_post_meta( $post_id, 'expires', $new_expiry_date );      
    }
     
}
add_action( 'save_post', 'tutsplus_save_expiry_date_meta' );

 

نحوه تعیین تاریخ انقضا برای پست های وردپرس

اضافه کردن jQuery UI datepicker برای انتخاب تاریخ:

برای اضافه کردن جی کئوری  کدهای زیر را بعد از کدهای بالا کپی کنید:

function tutsplus_load_jquery_datepicker() {    
    wp_enqueue_script( 'jquery-ui-datepicker' );
    wp_enqueue_style( 'jquery-style', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css' );
}
add_action( 'admin_enqueue_scripts', 'tutsplus_load_jquery_datepicker' );

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

نحوه تعیین تاریخ انقضا برای پست های وردپرس

در انتها برای فیلتر کردن پست ها از کدهای زیر استفاده کنید:

function tutsplus_filter_expired_posts( $query ) {
     
    // doesn't affect admin screens
    if ( is_admin() )
        return;
    // check for main query 
    if ( $query->is_main_query() ) {
 
        //filter out expired posts
        $today = date('d-m-Y');
        $metaquery = array(
            array(
                 'key' => 'expires',
                 'value' => $today,
                 'compare' => '<',
                 'type' => 'DATE',
            )
        );
        $query->set( 'meta_query', $metaquery );
    }
}
add_action( 'pre_get_posts', 'tutsplus_filter_expired_posts' );

امیدوارم از آموزش استفاده کرده و براتون مفید بوده باشه در صورت اینکه هرگونه اشکال یا سئوالی داشتی می توانید از قسمت نظرات بپرسید.



موضوعات :
آموزش وردپرس

درباره نویسنده

فرزاد خالدی 58 نوشته در دنیای وردپرس دارد . مشاهده تمام نوشته های

دیدگاه ها


پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *