我有一个自定义帖子类型,当您单击“发布”按钮时,需要保持帖子状态不会设置为“已发布”。相反,它应该像保存草稿按钮一样工作。所以我要么需要弄清楚如何删除“发布”按钮,以便用户只能单击“保存草稿”,最好更新“发布”按钮功能,这样它就不会将帖子设置为发布。
5 回答
您可以使用 wordpress 操作挂钩来修改默认行为。 http://codex.wordpress.org/Function_Reference/add_action
在您的情况下,您想使用 'publish_post' 挂钩。
所以你可以做
function dont_publish( $post_ID )
{
if(get_post_type($post_ID) == 'your_custom_type'){
exit;
}
}
//the dont_publish function will be called after the publish button is clicked
add_action( 'publish_post', 'dont_publish' );
如上所示,如果单击发布按钮,则不会发生任何事情,但是您可以使用 dont_publish 函数来获得所需的结果。
@PhoenixWing156 很接近,但有一点变化,所以其他帖子类型照常更新。
function dont_publish( $data , $postarr ) {
if($data['post_type'] == 'custom_post_type') {
$data['post_status'] = 'draft';
}
return $data;
}
add_filter('wp_insert_post_data' , 'dont_publish' , '99', 2);
在将有关帖子的信息保存到数据库之前调用 wp_insert_post_data 挂钩。 http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_insert_post_data 你可以试试:
function dont_publish( $data , $postarr )
{
if($data['post_type'] == 'custom_post_type'){
$data['post_status'] = 'draft';
return $data;
}
}
add_filter('wp_insert_post_data' , 'dont_publish' , '99', 2);
WordPress 正是为此目的提供了 remove_meta_box() 函数。只需添加以下代码:-
add_action( 'admin_menu', function () {
remove_meta_box( 'submitdiv', 'Your_custom_post_type', 'side' );
} );
您还可以禁用默认保存元框并添加您自己的。
这在 wordpress 的开发人员文档中没有很好地记录。
为此,您必须挂钩“add_meta_boxes”-hook,并且在挂钩函数中您必须调用 remove_meta_box('submitdiv','your-cpt','side'); 代码应该是这样的:
function your_cpt_metaboxes(){
remove_meta_box('submitdiv','your-cpt','side');
...
}
add_action('add_meta_boxes','function your_cpt_metaboxes');
your-cpt 当然必须更改为您的 cpt 的名称。
我也在寻找这个方便的片段,并在插件 Awesome Support中找到了它。
原始保存元框代码可以在 /wp-admin/includes/metaboxes.php 中找到。只需搜索 post_submit_meta_box(在 WP 5.4 第 22 行)。