サポート » 使い方全般 » 記事一覧にインフィード広告を表示させた時の問題

  • 解決済 katz01

    (@katz01)


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

    トップページの記事一覧にインフィード広告を表示させようと思い、下記タグをhome.phpに記述しました。

    <?php if(have_posts()): while(have_posts()): the_post(); $count++; ?>
    
    <?php 
    $ad_infeed = array(3,4);//広告の表示箇所
    $ad_disp = in_array($count,$ad_infeed);
    ?>
    
    <?php if($ad_disp): ?>
    
      <!--広告タグ-->
    
    <?php else: ?>
    
      <!--通常の記事コード-->
    
    <?php endif; ?>
    <?php endwhile; endif; ?>

    このコードだと希望の場所に広告が表示されるのですが、
    もともとあった記事と入れ替わってインフィード広告が表示されてしまいます。

    上記の場合だと通常の記事の3番目と4番目の記事とすり替わって、インフィード広告が表示されます。

    通常の記事を表示させ、なおかつ希望の場所にインフィード広告を表示させることは可能でしょうか?
    どうかお知恵を貸して頂けますと幸いです。

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

    どう表示されるのが正解かはよく分かりませんが、
    <?php else: ?>

    <?php endif; ?>
    に変えて、既存の
    <?php endif; ?>
    を削除すれば3番目の記事の上と、4番目の記事の上に広告が出るんじゃないでしょうか。

    トピック投稿者 katz01

    (@katz01)

    munyagu様

    お返事ありがとうございます。
    ご指摘いただいた方法も試したのですが、1つのループ内で広告と記事がセットになってしまう問題がありまして。。。

    今回の表示ケースの場合だと、3番目のところに広告が表示され、その下に通常の記事が入ってしまい、4番目に表示させたい広告が5番目にきてしまいます。

    ページネーションの関係上もあって、できればoffsetを使わずに解決したいのですが、良い方法はございますでしょうか?

    こんにちは、

    投稿のループ内に、アクションフックをつけて 各投稿の終わりに

    
    $action_key = absint( $count );
    do_action('raindrops_in_the_loop_'.  $action_key,'', $action_key ); 
    

    みたいにしておいて

    functions.php

    
    add_action('raindrops_in_the_loop_3','content_in_the_loop_3');
    
    function content_in_the_loop_3(){
    	
    	echo '<div>hello world</div>';
    }
    

    とすれば、3番目のループの下に<div>hello world</div> が表示できると思います。

    お試しは、raindrops — Free WordPress Themes で、上記のアクションをfunctions.php に追加すると出来ると思います。

    おかしな点あったら、教えてください :)

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

    (@katz01)

    nobita様

    お返事ありがとうございます。
    コードまで示していただき、感謝いたします。

    早速ご指摘いただいた方法で試してみましたが、一点問題がございまして。。。

    広告表示が1つの場合だとうまくいくのですが、2つ以上になると希望の場所に広告を表示させることができない状態です;;
    頂いたコードの例だと、希望通り3番目に広告を表示させることができます。
    しかし、4番目に表示させる関数(content_in_the_loop_4)を追加した場合、5番目に表示されてしまうという具合です。

    おそらくループ内にコードがあるため、通常の記事と広告がセットになってしまうことで起こる問題かと思います。

    うまく回避する方法はありますでしょうか?
    アドバイスいただけますと幸いです。

    こんにちは

    ご希望の動作がちょっと把握できていないのですが、単純に下記のようなコードでは駄目なのでしょうか?

    <?php if ( $count === 3 ): ?>
      <!--3番目広告タグ-->
      <!--4番目広告タグ-->
    <?php endif; ?>
    <!--通常の記事コード-->
    トピック投稿者 katz01

    (@katz01)

    ishitaka様

    ご返答ありがとうございます。

    ご指摘いただいた方法ですと、希望の場所に広告が表示されるのですが、
    もともとあった記事と入れ替わって広告が表示されてしまいます。

    うまく対処する方法はございますでしょうか?

    下記のコードですと入れ替わりますが、

    <?php if ( $count === 3 ): ?>
      <!--3番目広告タグ-->
      <!--4番目広告タグ-->
    <?php else: ?>
      <!--通常の記事コード-->
    <?php endif; ?>
    

    下記のコードでは挿入になると思うのですが・・・。

    <?php if ( $count === 3 ): ?>
      <!--3番目広告タグ-->
      <!--4番目広告タグ-->
    <?php endif; ?>
    <!--通常の記事コード-->
    

    どように入れ替わるのでしょうか?

    例)

    1. 記事1
    2. 記事2
    3. 広告1
    4. 広告2
    5. 記事3
    :

    
    add_action('raindrops_in_the_loop_3','content_in_the_loop_3');
    
    function content_in_the_loop_3(){
    	
    	echo '<li><h1>loop 3</h1></li>';
    }
    add_action('raindrops_in_the_loop_4','content_in_the_loop_4');
    
    function content_in_the_loop_4(){
    	
    	echo '<li><h1>loop 4</h1></li>';
    }
    

    いい加減に書いてしまってすみません。

    div 要素使ったため、おかしくなっているんだと思います。li要素使えばOKみたいです。
    ulのループなので、、、

    ご呈示のコードの場合は、

    
    <?php if($ad_disp): ?>
    
      <!--広告タグ-->
    
    <?php else: ?>
    
      <!--通常の記事コード-->
    
    <?php endif; ?>
    

    
    <!--通常の記事コード-->
    
    <?php if($ad_disp): ?>
    
      <!--広告タグ-->
    <?php endif; ?>
    
    

    で、OKにはならないですか?

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

    (@katz01)

    皆様、ご丁寧なアドバイスありがとうございます。
    いただいた情報をもとに昨夜自分なりに試行錯誤した結果、うまく表示させることができました!

    結論としましては、ishitaka様からご指摘いただいた方法を取ることで、非常にシンプルに解決できる問題でした(^_^;)

    おかげさまで悩んでいた問題を解決することができました。
    いつも助けていただき、ありがとうございます。

    もっとできることが増えるように精進いたします。
    これにて解決とさせていただきます。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「記事一覧にインフィード広告を表示させた時の問題」には新たに返信することはできません。