如何删除或更改自定义WordPress帖子上发布按钮的功能?
我有一个自定义的帖子类型,需要在单击“发布”按钮时将帖子状态设置为“已发布”。相反,它应该像保存草稿按钮一样工作。因此,我需要弄清楚如何删除“发布”按钮,以便用户只能单击“保存草稿”。我们最好更新“发布”按钮功能,使其不会将帖子设置为“发布”。您可以使用wordpress操作挂钩修改默认行为。 在您的情况下,您希望使用“publish_post”挂钩 所以你可以如何删除或更改自定义WordPress帖子上发布按钮的功能?,wordpress,Wordpress,我有一个自定义的帖子类型,需要在单击“发布”按钮时将帖子状态设置为“已发布”。相反,它应该像保存草稿按钮一样工作。因此,我需要弄清楚如何删除“发布”按钮,以便用户只能单击“保存草稿”。我们最好更新“发布”按钮功能,使其不会将帖子设置为“发布”。您可以使用wordpress操作挂钩修改默认行为。 在您的情况下,您希望使用“publish_post”挂钩 所以你可以 function dont_publish( $post_ID ) { if(get_post_type($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' );
如上所述,如果单击“发布”按钮,则不会发生任何事情,但您可以使用“不发布”功能来获得所需的结果。您可以使用wordpress操作挂钩来修改默认行为。 在您的情况下,您希望使用“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' );
如上所述,如果单击“发布”按钮,则不会发生任何事情,但您可以使用“不发布”功能来获得所需的结果。在将帖子信息保存到数据库之前,会调用wp\u insert\u post\u数据挂钩。 您可以尝试:
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_数据挂钩。 您可以尝试:
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);
@Phoenix Wing156很接近,但有一点变化,所以其他帖子类型会像往常一样更新
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);
@Phoenix Wing156很接近,但有一点变化,所以其他帖子类型会像往常一样更新
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的开发者文档中没有很好地记录这一点 要做到这一点,您必须钩住“add_meta_box”-钩住并在钩住的函数中调用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');
当然,您的cpt必须更改为您的cpt名称
我也在搜索这个方便的代码片段,并在插件中找到了它
原始的保存元盒代码可以在/wp admin/includes/metaboxes.php中找到。
只需搜索post_submit_meta_框(在WP 5.4的第22行)。您还可以禁用默认的保存metabox并添加您自己的metabox wordpress的开发者文档中没有很好地记录这一点 要做到这一点,您必须钩住“add_meta_box”-钩住并在钩住的函数中调用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');
当然,您的cpt必须更改为您的cpt名称
我也在搜索这个方便的代码片段,并在插件中找到了它
原始的保存元盒代码可以在/wp admin/includes/metaboxes.php中找到。
只需搜索post_submit_meta_box(在WP 5.4第22行中)。WordPress提供的remove_meta_box()函数正好用于此目的。只需添加以下代码:-
WordPress提供的remove_meta_box()函数正是出于此目的。只需添加以下代码:-
到目前为止,您了解到了什么?到目前为止,您了解到了什么?发布后钩子运行时未显示。尝试添加一个
die()
,以查看它是否被调用,但看起来好像没有。看了一下codex()并删除了该钩子的文档。它仍在使用?在post类型检查之前,还尝试在函数中输出字符串,但仍然没有结果。是否可以尝试将钩子名称更改为publish{post_type_name}?另一个选项是修改可以发布帖子的用户的权限。看:宾果,发布{post\u type\u name}成功了!感谢您没有出现发布后钩子运行。尝试添加一个die()
,以查看它是否被调用,但看起来好像没有。看了一下codex()并删除了该钩子的文档。它仍在使用?在post类型检查之前,还尝试在函数中输出字符串,但仍然没有结果。是否可以尝试将钩子名称更改为publish{post_type_name}?另一个选项是修改可以发布帖子的用户的权限。看:宾果,发布{post\u type\u name}成功了!谢谢,但不要雪茄。尝试过这个方法后,它似乎可以在现有的帖子上运行,但是当我尝试创建一个新的并点击发布时,它给出了一个e,用户没有权限错误。另外,当我转到新帖子时,许多元框都丢失了(可能与权限错误相同)。也许我支持返回数据,而不管帖子类型是什么?不管怎样,用户错误:/!谢谢你,但不要抽雪茄。尝试过这个方法后,它似乎可以在现有的帖子上运行,但是当我尝试创建一个新的并点击发布时,它给出了一个e,用户没有权限错误。另外,当我转到新帖子时,许多元框都丢失了(可能与权限错误相同)。也许我支持返回数据,而不管帖子类型是什么?不管怎样,用户错误:/!非常感谢,我只是想知道如何在这样的函数中获取元盒的值。例如,如果自定义元为空,则不发布$postarr
只提供了标题、摘录等。很好,只是想知道如何在这样的函数中获取元盒的值。例如,如果自定义元为空,则不发布$postarr
只给了我标题、摘录等。。