رفتن به مطلب

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


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

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

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

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

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
لینک به ارسال

لطفا برای ارسال دیدگاه وارد شوید

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



ورود به حساب کاربری
×
×
  • اضافه کردن...