質問

ここで興味深い質問があります。

最近気づいたのですが、このコードを利用すると

remove_meta_box('slugdiv', 'post', 'normal'); 

ページ タイトルの下にある URL スラッグをクリックしても、実際にはスラッグを変更することはできません。

明確にするために、slugdiv にremove_meta_boxを使用すると、メタボックスと画面​​オプションは削除されますが、投稿タイトルの下にあるURLをクリックして編集することはできます...ただし、投稿を更新/公開しようとすると、行った変更は反映されません。

私の目的は、同じメタボックスを投稿編集画面から削除し、画面オプションページからも削除することですが、投稿タイトルの下にあるスラッグを編集するときに、これが引き続き機能することを確認したいと考えています。

誰かがこの問題の解決策を提供できますか?前もって感謝します。

役に立ちましたか?

解決 2

結局、管理領域のfunctions.phpファイルで呼び出していたCSSファイルに次のCSSを追加するだけになりました。

[for="slugdiv-hide"] { 
    display: none; 
    }

#slugdiv { 
    display: none; 
    }

これにより、画面オプションとメタボックスの両方が削除されましたが、タイトルの下の URL を編集することはできました。

更新しました

FXFUTURE が提供した回答に基づいて、コードを拡張して画面オプションとスラッグ メタボックスの CSS 値を含めることでコードを変更し、コードが post-new.php と post.php ページにのみ含まれるようにしました。

// HIDE THE SLUG METABOX AND SLUG SCREEN OPTIONS
   function hide_slug_options() {
    global $post;
    global $pagenow;
    $hide_slugs = "<style type=\"text/css\">#slugdiv, #edit-slug-box, [for=\"slugdiv-hide\"] { display: none; }</style>\n";
    if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php') print($hide_slugs);
   }
   add_action( 'admin_head', 'hide_slug_options'  );

他のヒント

投稿タイトルの下にあるスラッグ編集を許可するボックスは、実際にはスラッグメタボックスに関連付けられています。機能するにはそれが必要です。したがって、メタボックスを削除すると壊れます。

唯一の解決策は、JavaScript または CSS を使用して非表示にすることだと思います。次のようなものが機能します:

function hide_slug_box() {
    global $post;
    global $pagenow;
    if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php') {
        echo "<script type='text/javascript'>
            jQuery(document).ready(function($) {
                jQuery('#edit-slug-box').hide();
            });
            </script>
        ";
    }
}
add_action( 'admin_head', 'hide_slug_box'  );

これを機能させるには、add_meta_boxes フックで Remove_meta_box を呼び出す必要があります。4.0でテストしました。

add_action( 'add_meta_boxes', 'customize_admin_backend_cpt',0 );

function customize_admin_backend_cpt () {
    remove_meta_box( 'slugdiv', 'your_cpt_goes_here', 'normal' );
}

CSS ファイルを編集する代わりに、functions.php でこれを使用できます。

function hide_all_slugs() {
global $post;
$hide_slugs = "<style type=\"text/css\"> #slugdiv, #edit-slug-box { display: none; }</style>";
print($hide_slugs);
}
add_action( 'admin_head', 'hide_all_slugs'  );
ライセンス: CC-BY-SA帰属
所属していません wordpress.stackexchange
scroll top