カスタム投稿タイプの編集ページからメタボックスを削除する方法は既に知っています。しかし、私はコメントメタボックスを削除したいのですが、それでもまだ投稿のコメントを許可します。削除すると気付くので、コメントを無効にします。使用できる機能はありますか?
CSSでこれを削除しないでください。 _POST部分もアクティブで、WPデータを保存します。フックを使用してメタボックスを削除します。最初からコードを書く。
function fb_remove_comments_meta_boxes() {
remove_meta_box( 'commentstatusdiv', 'post', 'normal' );
remove_meta_box( 'commentstatusdiv', 'page', 'normal' );
// remove trackbacks
remove_meta_box( 'trackbacksdiv', 'post', 'normal' );
remove_meta_box( 'trackbacksdiv', 'page', 'normal' );
}
add_action( 'admin_init', 'remove_comments' );
コメントのためのすべてのUI要素と機能を削除するプラグインの詳細を参照してください。 https://github.com/bueltge/Remove-Comments-Absolutely
あなたはそれを削除するためにUIを使用することができます:
編集画面の右上にある「画面オプション」をクリックしてください。
ディスカッションチェックボックスをオフにします。
あるいは、コードでそれをやりたいのであれば、単にstyle="display:none;"
でコンテナーdivを隠してください。
function hide_comments_div() {
global $pagenow;
if ($pagenow=='post-new.php' OR $pagenow=='post.php')
echo '<style>#commentstatusdiv{ display:none; }</style>';
}
add_action('admin_head', 'hide_comments_div');
/wp-includes/post.php
関数wp_insert_post()
ファイルに問題があります
if ( empty($comment_status) ) {
if ( $update )
$comment_status = 'closed';
else
$comment_status = get_option('default_comment_status');
}
あなたのコメントは更新後に閉じられます。解決策は、commentstatusdivのコールバックの変更コールバックです。
add_action(
'add_meta_boxes', function () {
global $wp_meta_boxes, $current_screen;
$wp_meta_boxes[$current_screen->id]['normal']['core']['commentstatusdiv']['callback'] = function () {
global $post;
echo '<input type="hidden" value="' . $post->comment_status . '" name="comment_status"/>';
echo '<input type="hidden" value="' . $post->ping_status . '" name="ping_status"/>';
echo '<style type="text/css">#commentstatusdiv {display: none;}</style>';
};
}
);
これをあなたのテーマのfunctions.php
に追加してください
function tune_admin_area() {
echo '<style>#commentstatusdiv{ display:none; }</style>';
}
add_action('admin_head', 'tune_admin_area');
これは私がコメントステータスボックスを含むいくつかのメタボックスを隠すために使用していたものです:
if (is_admin()) :
function my_remove_meta_boxes() {
if( !current_user_can('manage_options') ) {
remove_meta_box('postcustom', 'post', 'normal');
remove_meta_box('trackbacksdiv', 'post', 'normal');
remove_meta_box('commentstatusdiv', 'post', 'normal');
remove_meta_box('slugdiv', 'post', 'normal');
}
}
add_action( 'admin_menu', 'my_remove_meta_boxes' );
function handle_comments_setting( $data ) {
if( !current_user_can('manage_options') ) {
$data['comment_status'] = "open";
}
return $data;
}
add_filter( 'wp_insert_post_data', 'handle_comments_setting' );
endif;
これにより、メタボックスはすべての貢献者に対して非表示になりますが、管理者に対しては非表示になりません。
2番目の関数では、comment_status
は"open"
に設定されていますが、そもそもコメントを無効にする原因となったのと同じ条件が満たされた場合に限られます。