这是完全未经测试的,但我认为这个概念是好的,也是个好主意,尽管我会有一个愤怒的暴徒拿着干草叉面对。
预览帖子时,为帖子设置一个标记。您可以将其保存在$wpdb->options
或$wpdb->postmeta
. 我还没有决定哪个更好,这可能取决于实施的细节。(但可能$wpdb->postmeta
).在允许发布帖子之前,请检查该标记所以。。。
function set_preview_marker_wpse_99671() {
if (is_preview()) {
// set the marker
}
}
add_action(\'pre_get_posts\',\'set_preview_marker_wpse_99671\');
然后在允许发布之前检查密钥。
// code shamelessly stolen from another answer
// http://wordpress.stackexchange.com/questions/96762/how-to-make-a-meta-box-field-a-requirement/96767#96767
function req_meta_wpse_96762($data){
$allow_pending = false;
if (isset($_POST[\'meta\'])) {
foreach ($_POST[\'meta\'] as $v) {
if (\'your_required_key\' === $v[\'key\'] && !empty($v[\'value\'])) {
$allow_pending = true;
}
}
}
if (false === $allow_pending) {
$data[\'post_status\'] = \'draft\';
}
return $data;
}
add_action(\'wp_insert_post_data\',\'req_meta_wpse_96762\');
您可能希望在发布帖子时取消设置该键,以便在编辑帖子时再次强制预览检查。