web-dev-qa-db-ja.com

ドロップダウンリストからカスタムフィールド「提案」を削除する方法

WPで標準のカスタムフィールドを使用するときは、最初にcusotmフィールドの名前を書く必要があります。

カスタムフィールドを2回目に使用すると、カスタムフィールドのドロップダウンリストに固定されます。しかし、時々あなたがプラグインをインストールするときそれらはカスタムフィールドの多くです。

このリストは少し長くなり、私のカスタムフィールドをリストから「プッシュ」する可能性があります。では、ドロップダウンリストからカスタムフィールドを簡単に削除する方法を知っている人はいますか。

3
Demilio

これらのキーに対するクエリを'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;
}
1
fuxia

表示される内容をフィルタする方法はありません。キーを照会してwp-admin/includes/template.phpの関数meta_form()内のそのフィールドをレンダリングする場所を確認できますが、先頭にアンダースコアが付いたキーは無視されます。

HAVING meta_key NOT LIKE '\_%'

これは、プラグインがメニューからそれらのキーを隠すために作成するメタキーに対して行うべきことです。

その中に、デフォルトで30に設定されているpostmeta_form_limitというフィルターもあります。この数を増やすことで、少なくともリストにキーが含まれ、最後に落ちないようにすることができます。

もう1つのオプションは、[カスタムフィールド]メタボックスを使用するのではなく、特定のメタデータを管理するために 独自のメタボックス を作成することです。

0
Milo