web-dev-qa-db-ja.com

最初の段落と2番目の段落の後にコンテンツを表示する

以下の機能は、最初の段落の後に特定の内容を表示するために使用されます。 1段落目の後に「コンテンツX」、2段落目の後に「コンテンツY」を表示します。

<?php
$paragraphAfter= 1; //display after the first paragraph
$content = apply_filters('the_content', get_the_content());
$content = explode("</p>", $content);
for ($i = 0; $i <count($content); $i++ ) {
if ($i == $paragraphAfter) { ?>

<div>Insert content here</div>

<?php }
echo $content[$i] . "</p>";
} ?>

私はどんな助けにも感謝します。

3
BóbGCA

これを行う私の方法( 下記の更新を参照 ):

function addParagraphs($content) {
    // you can add as many as you want:
    $additions = array(
        '<p>After 1st paragraph</p>',
        '<p>After 2nd paragraph</p>'
    );

    $content = get_the_content();

    $output = ''; // define variable to avoid PHP warnings

    $parts = explode("</p>", $content);

    $count = count($parts); // call count() only once, it's faster

    for($i=0; $i<$count; $i++) {
        $output .= $parts[$i] . '</p>' . $additions[$i]; // non-existent additions does not concatenate
    }
    return $output;

}
add_filter('the_content','addParagraphs');

回答はその後のコメントに従って更新されます

$paragraphAfter[1] = '<div>AFTER FIRST</div>'; //display after the first paragraph
$paragraphAfter[3] = '<div>AFTER THIRD</div>'; //display after the third paragraph
$paragraphAfter[5] = '<div>AFTER FIFtH</div>'; //display after the fifth paragraph

$content = apply_filters( 'the_content', get_the_content() );
$content = explode("</p>", $content);
$count = count($content);
for ($i = 0; $i < $count; $i++ ) {
    if ( array_key_exists($i, $paragraphAfter) ) {
        echo $paragraphAfter[$i];
    }
    echo $content[$i] . "</p>";
}
7
Max Yudin

私はそれが古い質問であることを知っていました、しかしこの答えは人々がまだそれを探しているのを助けるべきです。

このプラグインはどのテーマでも完璧に機能します。

https://wordpress.org/plugins/insert-post-ads

あなたはあなたの広告を表示するためにあなたが最初/二番目または好きなものを選ぶことができます。

0
Ramkumar M

私はget_templateを呼び出すための方法を探していました、そしてここで私はそれが有用である場合にそれを共有します

<?php 
            $paragraphAfter[1] = "get_template_part( 'part-related', 'ad-first' );";
            $paragraphAfter[3] = "get_template_part( 'part-related', 'ad-third' );"; //display after the fifth paragraph
            $paragraphAfter[5] = "get_template_part( 'part-related', 'ad-fifth' );";


            $content = apply_filters( 'the_content', get_the_content() );
            $content = explode("</p>", $content);
            $count = count($content);
            for ($i = 0; $i < $count; $i++ ) {
                if ( array_key_exists($i, $paragraphAfter) ) {
                $string = eval($paragraphAfter[$i]); // Eval string
                    echo $string;
                }
                echo $content[$i] . "</p>";
            }
     ?>
0
joseyaz