0

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

4

5 回答 5

3

您可以使用 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 函数来获得所需的结果。

于 2013-02-16T19:58:35.103 回答
2

@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); 
于 2013-02-17T22:56:08.553 回答
1

在将有关帖子的信息保存到数据库之前调用 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);  
于 2013-02-16T21:52:28.033 回答
1

WordPress 正是为此目的提供了 remove_meta_box() 函数。只需添加以下代码:-

add_action( 'admin_menu', function () {
    remove_meta_box( 'submitdiv', 'Your_custom_post_type', 'side' );
} );
于 2020-11-28T04:43:12.123 回答
0

您还可以禁用默认保存元框并添加您自己的。

这在 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 行)。

于 2019-06-24T12:09:15.027 回答