• 解決済 mkon03

    (@mkon03)


    いつもお世話になっております。

    現在ACF PROにてオプションページ>テキストエリア(フィールド名:blank_id)を設置し、こちらに入力した数値を下記の様に出力しようと試みたのですが上手くいきません。PHPに触れ始めたばかりの為、もし可能であればご教授いただけますと幸いです。
    目的と致しましては、ループ内においてオプションページのテキストエリアより出力されたカテゴリIDを除外するという事です。

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

    <?php
    $field = get_field("blank_id", "option", false)
    $args = array(
        'category' => $cat_id,
        'posts_per_page' => -1,
        'category__not_in' => array($field),
    );
    $customPosts = get_posts($args);
    if($customPosts) :?>
3件の返信を表示中 - 1 - 3件目 (全3件中)
  • オプションページのテキストエリア

    持っていないのでこれがどのようなものなのか分からないのですが
    'category' => $cat_id,
    これだけなので単にID番号が取得できてないからでしょう。

    https://www.advancedcustomfields.com/resources/get-values-from-an-options-page/
    このページによると
    $cat_id = get_field('フィールド名', 'option');
    このように書けば良いと思います。

    mkon03さん

    manboさんの言われるようにACFのマニュアルを参考に取得された方が良いと思われます。

    ただ、調っと気になったのが、標準状態ですと、数字以外のものがテキストボックスだと入力できてしまいます。
    正規表現等をかましても良いのですが、ACFには「タクソノミー」という便利なフィールドが備わっています。
    返り値を「ID」に設定されますと、必ずタームIDが返ってきますので
    不具合防止に、タクソノミーを指定して取得するとよろしいかと思われます。

    複数(配列)で取得されるのであれば「intval()」は外してください。

    
    <?
    
    $field = get_field('blank_id', 'option');//必ず半角英数カンマ区切り
    //テキストよりはプロを使われてるならタクソノミーを使用される方が安全
    //タクソノミーの場合は、「単形式」「返り値:ID」を指定
    //$field = intval(get_field('blank_id', 'option'));
    
    if($field):
    
      $args = array(
    	  'category' => $cat_id,
    	  'posts_per_page' => -1,
    	  'category__not_in' => array($field)
    	  );
    
    else://未入力の場合の処理
    
      $args = array(
    	  'category' => $cat_id,
    	  'posts_per_page' => -1
    	  );
    
    endif;
    
    ?>
    
    
    トピック投稿者 mkon03

    (@mkon03)

    ご指摘をいただきありがとうございます。
    該当の部分を確認してみます。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「ACF PROにてオプションページの出力」には新たに返信することはできません。