web-dev-qa-db-ja.com

カスタム投稿タイプからカスタムメタボックスを削除する

デフォルトのメタボックスだけを含み、他のプラグインによって追加された他のメタボックスを含まない、ワードプレスのカスタム投稿タイプを作成する方法はありますか。

アイデアはプラグインを開発するためにカスタム投稿を使うことです。このプラグインはすべてカスタム投稿タイプの関数を持っている必要がありますが、プラグインがall-in-seoのように追加するすべてのメタボックスを持っています。

私はユーザーのためのクリーンなインターフェースを作りたいのですが、それらの余分なメタボックスは邪魔になります:-)

3
Bob Tolbert

私の頭の上では、実際にテストしなくても、これでうまくいくはずです。フロントエンドでコードを実行しないようにis_adminをテストしてから、そのスラッグと等しいポストタイプをテストします。私が以前に愚かなミスをしたのでこれを編集しました。

Codexのこのページを参照してください: http://codex.wordpress.org/Function_Reference/remove_meta_box

if( is_admin() ) {
    remove_meta_box('linktargetdiv', '$posttype', 'normal');
    remove_meta_box('linkxfndiv', '$posttype', 'normal');
    remove_meta_box('linkadvanceddiv', '$posttype', 'normal');
    remove_meta_box('postexcerpt', '$posttype', 'normal');
    remove_meta_box('trackbacksdiv', '$posttype', 'normal');
    remove_meta_box('postcustom', '$posttype', 'normal');
    remove_meta_box('commentstatusdiv', '$posttype', 'normal');
    remove_meta_box('commentsdiv', '$posttype', 'normal');
    remove_meta_box('revisionsdiv', '$posttype', 'normal');
    remove_meta_box('authordiv', '$posttype', 'normal');
    remove_meta_box('sqpt-meta-tags', '$posttype', 'normal');
}
4

あなたはここで最良の答えを見つけることができます: http://codex.wordpress.org/Function_Reference/remove_meta_box

WordPressテーマの functions.php ファイルに次のコードのようなものを追加すると、特定のメタボックスを削除できます。

 // 'YOUR_CUSTOM_POST_TYPE'カスタム投稿タイプの特定のメタボックスを非表示にする
 add_filter( 'add_meta_boxes'、 'hide_meta_boxes_YOUR_CUSTOM_POST_TYPE'); 
 function hide_meta_boxes_YOUR_CUSTOM_POST_YPE 
 remove_meta_box( 'postexcerpt'、 'YOUR_CUSTOM_POST_TYPE'、 'ノーマル'); 
 remove_meta_box( 'trackbacksdiv'、 'YOUR_CUSTOM_POST_TYPE'、 'ノーマル'); 
 remove_meta_box( 'postcustom'、 'POSTYPORT'、YO_P_CT '[通常'); 
 remove_meta_box( 'slugdiv'、 'YOUR_CUSTOM_POST_TYPE'、 '通常'); 
 remove_meta_box( 'commentstatusdiv'、 'YOUR_CUSTOM_POST_TYPE'、 '通常'); 
 remove_meta_box( 'commentsdiv'、 'YOUR_CUSTOM_POST_TYPE'、 'normal'); 
 remove_meta_box( 'revisionsdiv'、 'YOUR_CUSTOM_POST_TYPE'、 'normal'); 
} 
2
sanchu

まず第一にあなたはそれをするべきではありません。ユーザーが他のプラグインをインストールしているのなら、あなたのプラグインがそのプラグインのすべての機能を提供していても、それを使用したくないからです。

そして、そのユーザーがすでに他のプラグインとたくさんの設定を持っていて、それらがあなたのプラグインをインストールして消えているのを見るなら?私は、ユーザーがすぐにあなたのプラグインを解き放つことを賭けます(そしてその場合、非常に低い票が来る可能性があるならば)。

また、別のプラグインがあなたのメタボックスを削除するために同じテクニックを使うことができると考えてください。他のプラグインは、そのプラグインのメタボックスを削除します。

それは何だろう、 メタボックスの戦争

私の提案はあなたのメタボックスを追加し、ユーザーにどのメタボックスを残すか、何を削除するかを決定させることです(プラグインをアンインストールするか、または「スクリーンヘルプ」タブからメタボックスをチェック解除する)。

最後に、あなたがそれらのメタボックスのidを知らないなら、あなたはプラグインのメタボックスを削除することができないことに注意してください。それであなたが望むことをするためにあなたは全ての " 競合者 "プラグインをインストールし、それらのメタボックスのidを見てremove_meta_boxを使ってそれらを削除するべきです。

そして、もしプラグインが更新されてそのメタボックスのIDを変更したら?

私を信じてください、それは堅くて、汚くて、無益な仕事です。

0
gmazzap

他の回答と一緒に私はあなたがあなたのカスタム投稿タイプを作成した場合

$args = array(
    ...
    public => false
    ...
) 

たとえば、YoastによるWordpress Seoのようなメタボックスは含まれません。私の場合は、ポップアップにcptを使用するので、他のメタボックスは不要であり、cptを公開する必要はありません。

0
chifliiiii