2016-07-20 3 views
0

現在、ACF関係フィールドを使用して、特定のコードを実行したいページを選択しようとしています。たとえば、ページA、ページB、ページC、私は仕事を "こんにちは"を追加したいと思います。ACF - リレーションシップフィールドを使用してページを選択する

これまでのところ、私は以下の関係フィールドを持っています。

 <?php 
$posts = get_field('which_venue', options); 

if($posts): ?> 
    <ul> 
    <?php foreach($posts as $post): // variable must be called $post (IMPORTANT) ?> 
     <?php setup_postdata($post); ?> 
     <li> 
      <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> 
      <?php 
      $thisurl = the_permalink(); 
      // echo $thisurl;    

      $url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; 
      if($url == $thisurl) { 
    echo "match"; 
} 
?> 
     </li> 
    <?php endforeach; ?> 
    </ul> 
    <?php wp_reset_postdata(); // IMPORTANT - reset the $post object so the rest of the page works correctly ?> 
<?php endif; ?> 

私の考えは、私のURLがhttp://www.example.com/pageaだったと私はページAを選択した場合、それは今のところハロー表示しないが、残念ながら運でしょう意味、選択されたURLにURLを試してみて、matchtheすることでした。

これを回避する方法はありますか?

ありがとうございます!

+0

。ループの中で 'get_the_ID()'を使うと、表示されているページのIDを取得できます。次に、ACFからページIDを取得します。私は頭の上から後の部分のやり方を思い出しません。 –

+0

したがって、関係フィールド 'which_venue'でページA、B、およびDを選択し、ユーザーがページA、B、またはDにある場合は、特別なコードを実行して訂正しますか? – Joe

+0

それは正しいです。今私は解決策があります。私は明日同じような問題を抱えている人に投稿します –

答えて

0

あなたの質問から、これはトリックを行うだろうと同じように、それが見えます:

    ではなく、ポストオブジェクトのポストIDを保存するためにあなたの関係フィールドを変更
  1. 変更したら、オプションページに移動し、フィールドデータを再保存します。
  2. 置き、あなたのコードを実行したいこれはあなたのpage.phpファイル内のコード、またはどこに:私は代わりにURLのページのIDと照合することをお勧め

    <?php //Check if this page is selected in which_venue 
    
    //Get the selected fields 
    $selectedPages = get_field('which_venue', options); 
    
    //Get the current page's ID 
    $myID = get_the_ID(); 
    
    //Check if the current page's ID exists inside the selected fields array. 
    if(in_array($myID, $selectedPages)){ 
        //Run your code 
        echo 'This Page was selected in "which_venue".'; 
    }else{ 
        //Run other code 
        echo 'This Page was NOT selected in "which_venue".'; 
    } ?> 
    
関連する問題