可能是个奇怪的问题。我正在使用自定义MetaBox and CustomFields Class Github上的jaredatch。
我有这个“事件日期”元框:
$meta_boxes[] = array(
\'id\' => \'event_date\',
\'title\' => \'Event Date\',
\'pages\' => array( \'wr_event\', ),
\'context\' => \'normal\',
\'priority\' => \'high\',
\'fields\' => array(
array(
\'name\' => \'Test Date Picker (UNIX timestamp)\',
\'desc\' => \'field description (optional)\',
\'id\' => $prefix . \'event_date\',
\'type\' => \'text_date_timestamp\',
)
),
);
我还有一个叫做“事件回顾”的metabox
$meta_boxes[] = array(
\'id\' => \'wr_event_review\',
\'title\' => \'Event Review\',
\'pages\' => array( \'wr_event\', ), // Post type
\'context\' => \'normal\',
\'priority\' => \'high\',
\'show_names\' => true, // Show field names on the left
\'fields\' => array(
array(
\'name\' => \'Event Review\',
\'id\' => $prefix . \'event_wysiwyg\',
\'type\' => \'wysiwyg\',
\'options\' => array( \'textarea_rows\' => 5, ),
)
),
);
我想知道是否有可能仅在日期结束时才显示event review metabox?
类似于…
if ( date(\'U\') > date(\'U\', $_POST["_wr_event_date"] ) ) {
$meta_boxes[] = array(
\'id\' => \'wr_event_review\',
\'title\' => \'Event Review\',
然而,我不知道这是否可能,甚至不知道如何得到电流
event_date
这在输入中。
对此有何想法?
最合适的回答,由SO网友:Stephen Harris 整理而成
不确定链接类-他们似乎会立即收集元盒,因此没有关于正在查看的帖子的信息。
但总的来说——是的,这是可能的。要添加元盒,请执行以下操作:
add_action( \'add_meta_boxes\', \'myplugin_add_my_custom_box\',10,2);
请参见
source code here. 这
add_meta_boxes
钩子传递两个变量:post类型和post对象。您可以使用post获取post meta,然后调用
add_meta_box
在适当的情况下。
function myplugin_add_my_custom_box($post_type,$post){
//Get event date as a timestamp
$event_date = (int) get_post_meta($post->ID,\'_wr_event_date\',true);
//Check date exists and is in the past. If not, return: don\'t add metabox.
if( empty($event_date) || current_time(\'timestamp\') < $event_date)
return;
add_meta_box(
\'myplugin_sectionid\',
__( \'My Post Section Title\', \'myplugin_textdomain\' ),
\'myplugin_metabox_callback\',
\'event\'
);
}
你会注意到还有
add_meta_boxes_{$post_type}
挂钩-如果您只想将其添加到“event\\u cpt”帖子类型中,这会更有效:
add_action( \'add_meta_boxes_event_cpt\', \'myplugin_add_my_custom_box\',10,1);
在这种情况下,回调只包括
$post
作为论据!
Note: Avoid using php date/time functions: 默认情况下,这将始终将时区设置为UTC。如果您希望使用以下内容在博客时区中显示当前日期/时间current_time()
SO网友:Long Trịnh
如果要在事件日期更改时显示或隐藏整个元框,可以尝试使用Conditional Logic 插件,这样您就可以像这样重写代码:
$meta_boxes[] = array(
\'id\' => \'wr_event_review\',
\'title\' => \'Event Review\',
\'pages\' => array( \'wr_event\', ), // Post type
\'context\' => \'normal\',
\'priority\' => \'high\',
\'show_names\' => true, // Show field names on the left
\'visible\' => array(\'event_date\', \'>\', \'2015-08-25\'),
\'fields\' => array(
array(
\'name\' => \'Event Review\',
\'id\' => $prefix . \'event_wysiwyg\',
\'type\' => \'wysiwyg\',
\'options\' => array( \'textarea_rows\' => 5, ),
)
),
);
您可以将“2015-08-25”更改为您想要的任何值;)