WPで標準のカスタムフィールドを使用するときは、最初にcusotmフィールドの名前を書く必要があります。
カスタムフィールドを2回目に使用すると、カスタムフィールドのドロップダウンリストに固定されます。しかし、時々あなたがプラグインをインストールするときそれらはカスタムフィールドの多くです。
このリストは少し長くなり、私のカスタムフィールドをリストから「プッシュ」する可能性があります。では、ドロップダウンリストからカスタムフィールドを簡単に削除する方法を知っている人はいますか。
これらのキーに対するクエリを'query'
でフィルタリングできます。私は副作用を避けるためにできるだけ遅くそのフィルターを始めます。
サンプルコード、テスト済み:
add_filter( 'postmeta_form_limit', 'wpse_73543_hide_meta_start' );
function wpse_73543_hide_meta_start( $num )
{
add_filter( 'query', 'wpse_73543_hide_meta_filter' );
return $num;
}
function wpse_73543_hide_meta_filter( $query )
{
// Protect further queries.
remove_filter( current_filter(), __FUNCTION__ );
$forbidden = array ( 'the', 'keys', 'you', 'want', 'to', 'hide' );
$where = "WHERE meta_key NOT IN('" . join( "', '", $forbidden ) . "') ";
$find = "GROUP BY";
$query = str_replace( $find, "$where\n$find", $query );
return $query;
}
表示される内容をフィルタする方法はありません。キーを照会してwp-admin/includes/template.php
の関数meta_form()
内のそのフィールドをレンダリングする場所を確認できますが、先頭にアンダースコアが付いたキーは無視されます。
HAVING meta_key NOT LIKE '\_%'
これは、プラグインがメニューからそれらのキーを隠すために作成するメタキーに対して行うべきことです。
その中に、デフォルトで30に設定されているpostmeta_form_limit
というフィルターもあります。この数を増やすことで、少なくともリストにキーが含まれ、最後に落ちないようにすることができます。
もう1つのオプションは、[カスタムフィールド]メタボックスを使用するのではなく、特定のメタデータを管理するために 独自のメタボックス を作成することです。