web-dev-qa-db-ja.com

ループ内の投稿間に広告を挿入するのに最適な方法は?

私は私の最初のWPプロジェクトに取り組んでいます。

ホームページ上のすべての投稿を並べて表示するテーマがあります。また、5〜6の投稿ごとに繰り返し広告を追加する必要があります。

私の考えは、投稿を一覧表示するデータベースクエリを変更し、ループを繰り返すたびに広告を追加することでした。

誰かが私にデータベースクエリを探す場所の方向を示すことができますか?

それともあなたが提案できるよりエレガントな解決策はありますか?

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

2
Stuart Hall

おそらくカウンターを1つ追加し、広告を6の倍数で表示します。

何かのようなもの

$count = 0;
$adEvery = 6;

if (have_posts()) :
    while (have_posts()) : the_post();

        // Individual Post

        $count++;
        if ($count%$adEvery == 0) { 
            // your ad
        } 
    endwhile;
else :
    // No Posts Found
endif;
2
David Sword

Phil Kurthは有益な記事を書いていますcurrent_postオブジェクト内のglobal $wp_queryプロパティを使ったWordPressループの分割処理について。

これはあなたの質問にも当てはまり、ループのどの時点でもコンテンツをきれいに挿入することができます。

関数は次のとおりです(functions.phpに配置するか、または私の好みでは、クエリの変更のみを処理する別のライブラリファイルに配置します)。

/**
 * Returns the index of the current loop iteration.
 *
 * @return int
 */
function pdk_get_current_loop_index() {
    global $wp_query;
    return $wp_query->current_post + 1;
}

ループを出力するときに、6番目の投稿の後に広告を挿入したい場合は、次のようにします。

if ( have_posts() ) :
    while (
        have_posts() ) :
        the_post();

        get_template_part( 'content' );

        if ( pdk_get_current_loop_index() === 6 ) {
        ?>
            <div class="ad-mrec">
                <!-- Insert ad coder here -->
            </div>
        <?php
        }

    endwhile;
endif;

Philの記事を読んでいれば、この関数でできることは他にもあります。

1
davemac