我一直在寻找一个解决方案,以显示带有草稿按钮的提交框。
显示此框的代码由函数生成post_submit_meta_box
从…起wp-admin/includes/meta-boxes.php
.
正如我们所看到的,没有钩子来覆盖某些代码,因此下面的解决方案是我找到的最好的方法,它不需要使用像隐藏css或js这样的脏解决方案:
1-删除metabox“submitdiv”
public function remove_customized_metabox(){
remove_meta_box( \'submitdiv\', $post_type_slug, \'side\' );
}
add_action( \'add_meta_boxes\', "remove_customized_metabox", 10 );
添加我的“submitdiv”自定义元数据库您必须使用不同的id
submitdiv
在我的示例中,要显示元框,请使用下划线作为前缀:
_submitdiv
add_meta_box(
"_submitdiv",
__( "Publish" ),
"my_custom_callback",
$post_type_slug,
\'side\',
\'core\',
[ \'show_draft_button\' => false ]
);
3-在回调函数中写入视图
post_submit_meta_box
, 按如下方式编写回调函数:
public function my_custom_callback(?\\WP_Post $post, array $callback_args){
global $action;
$post_type = $post->post_type;
$post_type_object = get_post_type_object($post_type);
$can_publish = current_user_can($post_type_object->cap->publish_posts);
?>
<div class="submitbox" id="submitpost">
...
if( $callback_args[\'show_draft_button\'] ) {
//display the draft button
}
...
}
4-更改_submitdiv
通过submitdiv
如果要更改发布日期,请使用jquery,post.js
使用锚点#submitdiv
所以你必须更改id。
wp_enqueue_style( "metaboxsubmitstyle", "path/css/admin-metabox-submit.css" );
wp_enqueue_script( "metaboxsubmitscript", "path/js/admin-metabox-submit.js" );
管理元数据库提交。css
#poststuff #_submitdiv .inside {
margin: 0;
padding: 0;
}
管理元数据库提交。js公司
jQuery(function ($) {
$(document).ready(function () {
$("#_submitdiv").attr( \'id\', "submitdiv");
});
});