رفتن به مطلب

تاریخ انقضا برای پست ها بدون افزونه


پست های پیشنهاد شده

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

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

کدها به شکل زیرن

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' );

add_action( 'add_meta_boxes', 'add_expiry_date_metabox' );
function add_expiry_date_metabox()
{
  add_meta_box(
      'expiry_date_metabox',
      'تاریخ انقضا نمایش تور',
      'expiry_date_metabox_callback',
      'post',
      'side',
      'high' );
}

function expiry_date_metabox_callback( $post ) { ?>
    <form action="" method="post">
        <?php
        // add nonce for security
        wp_nonce_field( 'expiry_date_metabox_nonce', 'nonce' );
        //retrieve metadata value if it exists
        $expiry_date = get_post_meta( $post->ID, 'expires', true );
        ?>
        <br>
        <?php echo date('d-m-Y');
        
        ?>
        <input
          type="text"
          class="MyDate"
          name="expiry_date"
          value=<?php echo esc_attr( $expiry_date ); ?> / >
          <script type="text/javascript">
         jQuery(document).ready(function() {
             jQuery('.MyDate').datepicker({
                 dateFormat : 'dd-mm-yy'
             });
         });
     </script>
    </form>

<?php }

function 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['expiry_date'] ) ) {
        $new_expiry_date = ( $_POST['expiry_date'] );
        update_post_meta( $post_id, 'expires', $new_expiry_date );
    }

}
add_action( 'save_post', 'save_expiry_date_meta' );


function 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', 'filter_expired_posts' );

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

می تونم کاری بکنم که برگه ها رو نادیده بگیره با تابع زیر

if(is_page())
return;

ولی با این کار تمام پست ها رو نشون میده و تاریخ انقضا رو که با یه متاباکس به بخش نوشته ها اضافه کردم در نظر نمیگیره

لطفا کمکم کنین

ویرایش شده توسط hbsoft
لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...