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

نحوه تعیین تاریخ انقضا برای پست های وردپرس ، شاید برای شما نیز اتفاق افتاده باشد که بخواهید مثلا پستی را تا تاریخ مشخصی نمایش و بعد از آن پست را حذف کنید یا از حالت نمایش خارج کنید. که به صورت پیش فرض در وردپرس امکان تعیین تاریخ انقضا برای پست های وردپرس وجود ندارد.
ما در این آموزش میخواهیم کد نویسی یک افزونه کوچک برای وردپرس که با آن می توانید برای پست های خود تاریخ انقضا قرار دهید را یاد می دهیم.
نحوه تعیین تاریخ انقضا برای پست های وردپرس
برای شروع نحوه تعیین تاریخ انقضا برای پست های وردپرس به این صورت عمل خواهیم کرد:
- ایجاد یک متا باکس در صفحه نوشته ها برای تعیین تاریخ انقضا
- اضافه کردن jQuery UI datepicker برای انتخاب تاریخ انقضا
- استفاده از
pre_get_posts
قبل از نمایش پست های وردپرس
آماده سازی : ابتدا وارد پوشه پلاگین های خود شوید که در مسیر wp-content
قرار دارد و یک پوشه با نام دلخواه باز کنید.
به طور مثال : azarwp-post-expiry-date درون پوشه یک فایل خالی با نام azarwp-post-expiry-date.php باز کنید و کد های زیر را درون آن کپی کنید:
<?php /* Plugin Name: Add an Expiry Date to Posts Plugin URI: http://azarwp.com 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' );
امیدوارم این آموزش وردپرس برای شما دوستان مفید واقع شده باشد.
در صورت وجود هرگونه اشکال یا سوال می توانید از قسمت نظرات بپرسید.
سلام. ممنون از آموزش خوبتون.
ببخشید یه سوالی داشتم!
وقتی زمان نوشته به پایان رسید، پست به زباله دان انتقال پیدا می کنه یا خیر؟
با تشکر.
سلام
بله به زبالهدان انتقال پیدا می کند.
سلام. ممنون از پاسختون.
فقط ببخشید ، دیتا پیکرش چطور شمسی میشه؟