2

Wordpress用のacfAdvancedCustomFieldsプラグインを使用しています。デフォルトですべてのフィールドグループを出力する汎用テンプレートを使用しています。一部のフィールドは特定のページにのみ表示されるため、どのフィールドを出力する必要があるかを判断したいと思います。私の現在の回避策は次のとおりです。

1、バックエンドにacf-フィールドグループ(たとえば、「マイフィールドグループ」という名前)を作成しました。
2、「マイフィールドグループ」のacf-menuで役割を設定して、たとえば特定のページにのみ表示します(役割はカテゴリなどでもかまいません)
3、チェックボックスと名前を使用してカスタムフィールドを作成しました常に「yes」を返す「MyFieldGroup」内の「mygroup」。

4、次にコードで、カスタムフィールド「mygroup」の値をチェックすることにより、グループ「MyFieldGroup」がページで使用可能かどうかをチェックできます。はいの場合、「マイフィールドグループ」のすべてのフィールドが返されます

コード:

//check if the field group "My Field Group" is available by checking the value of its custom field "mygroup" 
<?php if(get_field('mygroup') == "yes") { ?>
    <div>
        //load all other fields in the field group "My Field Group"
    </div>
<?php } ?>

これには、フィールドグループがページで使用可能かどうかを確認するためだけに(それぞれ役割を決定するために)追加のフィールドが必要になるため、それを実現するためのよりエレガントな方法があるかどうか疑問に思いました。

acfエディター

ページ

更新: プログラマーからのフィードバックは次のとおりです。

ACFは、投稿に表示された特定のフィールドグループに関する情報を保存せず、フィールド値のみを保存します。

あなたの方法は最小限で、効率的で、賢いものだと思います。私はこれを使い続けます。

乾杯エリオット

4

1 に答える 1

0

フィールドmygroupが有効かどうかを簡単に確認するには、次を使用します。

// call the function only once
$group = get_field('mygroup');

if( $group ) { 
    ?>
    <div>
        <?php do_your_magic_with_the_other_fields(); ?>
    </div>
    <?php
} 

全体をチェックする場合My Field Group

ACF フィールド グループは、wp_postsテーブルに格納されるカスタム投稿タイプです。このフィールド グループ内のフィールドは、wp_postmetaテーブルに格納されます。

したがって、投稿の存在を確認する必要があります。

acf フィールド グループ

データベース内の同じ「フィールド グループ」:

データベース内の acf フィールド グループ クリックして拡大⤴</sup>


解決策: get_page_by_title()を使用してください

私の例では:

if( get_page_by_title( 'TimMaia', OBJECT, 'acf' ) )
{
    // Your stuff
}
于 2012-12-08T14:36:22.880 に答える