Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除或更改自定义WordPress帖子上发布按钮的功能?_Wordpress - Fatal编程技术网

如何删除或更改自定义WordPress帖子上发布按钮的功能?

如何删除或更改自定义WordPress帖子上发布按钮的功能?,wordpress,Wordpress,我有一个自定义的帖子类型,需要在单击“发布”按钮时将帖子状态设置为“已发布”。相反,它应该像保存草稿按钮一样工作。因此,我需要弄清楚如何删除“发布”按钮,以便用户只能单击“保存草稿”。我们最好更新“发布”按钮功能,使其不会将帖子设置为“发布”。您可以使用wordpress操作挂钩修改默认行为。 在您的情况下,您希望使用“publish_post”挂钩 所以你可以 function dont_publish( $post_ID ) { if(get_post_type($post_

我有一个自定义的帖子类型,需要在单击“发布”按钮时将帖子状态设置为“已发布”。相反,它应该像保存草稿按钮一样工作。因此,我需要弄清楚如何删除“发布”按钮,以便用户只能单击“保存草稿”。我们最好更新“发布”按钮功能,使其不会将帖子设置为“发布”。

您可以使用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' );

如上所述,如果单击“发布”按钮,则不会发生任何事情,但您可以使用“不发布”功能来获得所需的结果。

您可以使用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
只给了我标题、摘录等。。