我创建了一个带有元框的插件,元框中有一个复选框,并注意到当一篇文章从预定(未来)转到发布时,元不再被选中。
当我安排帖子并选中该框时,它将保持保存状态。如果帖子已发布,我选中该框,它将保持选中状态。从“已发布”转到“草稿”可保持复选框处于选中状态。
我不知道我做错了什么。这是我的代码:
add_action(\'add_meta_boxes\', \'add_feature_meta\');
function add_feature_meta() {
if(current_user_can(\'edit_posts\')) {
add_meta_box(\'feature_meta_id\', \'Feature this Article?\', \'feature_meta_box\', \'post\', \'side\', \'high\');
}
}
function feature_meta_box() {
global $post;
$feature_data = get_post_meta($post->ID, \'feature_meta_id\', true);
?>
<label for="featured-meta"><input type="checkbox" id="featured-meta" name="feature_meta_id" <?php if($feature_data == \'1\') { echo \'checked\'; } ?>> Make this featured</label>
<?php
}
function k2_feature_meta_save_details($post_id) {
global $post;
if((defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE) || (defined(\'DOING_AJAX\') && DOING_AJAX)) {
return;
}
if(isset($_POST[\'feature_meta_id\'])) {
$feature_data = 1;
} else {
$feature_data = 0;
}
update_post_meta($post_id, \'feature_meta_id\', $feature_data);
}
add_action(\'save_post\', \'k2_feature_meta_save_details\');
最合适的回答,由SO网友:s_ha_dum 整理而成
我没有测试过这个,但我猜是$_POST
保存帖子时未设置wp_cron
将状态从“Scheduled”更改为“Published”,从而将您的值保存/重置为0。
而不是使用save_post
你可以钓到several transition hooks 适合您的需要。
或者,您可以删除一个或多个似乎有问题的转换的操作。例如:
add_action(
\'pending_to_publish\',
function($post) {
remove_action(\'save_post\', \'k2_feature_meta_save_details\');
}
);
未经测试,但我希望这会有所帮助。