サポート » プラグイン » advanced custom fieldsをfunctions.phpで条件分岐で出力

  • 解決済 webdigiark

    (@webdigiark)


    こんにちは

    ■advanced custom fieldsのSelectを使いWidgetに出力させて、functions.phpで条件分岐をしたいのですが、思うように動いてくれません。

    作ったソースは以下です。

    // functions.php

    function acf_scripts() {
    	$ctm = get_field('fontfamily', 'widget_' . $args['widget_id']);
    	if( ($ctm == 'body-roboto') ){ 
    		echo "Can be obtained";
    	} else {	
    		echo "can not get";
    	}
    }
    add_action('wp_head', 'acf_scripts');

    ACFのフィールド名が fontfamily でSelectで body-roboto を選択でCan be obtainedをhead部分に出力する仕組みを作りたいのですが、can not getが出力されます。

    ■試した事

    以下のページを参照しましたが取得できませんでした。
    https://www.advancedcustomfields.com/resources/select/

    <?php

    if( get_field(‘color’) == ‘red’ ) {
    // Do something.
    }
    ?>
    上記の方法ではindex.phpなどのテンプレートで条件分岐はできますが、function.phpでは動いてくれません。

    よろしくお願いいたします。

    • このトピックはwebdigiarkが3年、 2ヶ月前に変更しました。
    • このトピックはwebdigiarkが3年、 2ヶ月前に変更しました。
    • このトピックはwebdigiarkが3年、 2ヶ月前に変更しました。
    • このトピックはwebdigiarkが3年、 2ヶ月前に変更しました。
    • このトピックはwebdigiarkが3年、 2ヶ月前に変更しました。
    • このトピックはwebdigiarkが3年、 2ヶ月前に変更しました。

    ヘルプの必要なページ: [リンクを見るにはログイン]

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • こんにちは

    get_field の第二引数は投稿 ID です。

    'widget_' . $args['widget_id']なるものが指定されていますが、これは明らかに投稿 ID では無いようです。
    いま表示しようとしている投稿のfontfamilyフィールドの値を取得したいのであれば、ループの外ですがグローバルの$postはセットされていますので、

    global $post;
    $ctm = get_field('fontfamily', $post->ID);

    という感じではないでしょうか。

    トピック投稿者 webdigiark

    (@webdigiark)

    返信遅れてい申し訳ありません。

    POST_IDではなくWidget IDを取得したいので ’widget_’ . $args[‘widget_id’] の場合、テンプレートでは取得できるので、あってるように思います。

    Widgetに出力したカスタムフィールドをfunctions.phpで取得して条件分岐をできると思ったのですが、様々調べた結果Widgetのカスタムフィールドのカスタマイズは、ACF公式や海外のソースを見ても答えが見えなかったので、トピックを終了します。

    ありがとうございました。

    • この返信は3年、 2ヶ月前にwebdigiarkが編集しました。
    トピック投稿者 webdigiark

    (@webdigiark)

    ありがとうございました。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「advanced custom fieldsをfunctions.phpで条件分岐で出力」には新たに返信することはできません。