hbsoft

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

1 پست در این موضوع قرار دارد

ارسال شده در (ویرایش شده)

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

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

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

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
0

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری