0

これはWordpress指向ですが、PHPの基礎はもっとStackoverflowの質問だと思います:

投稿include()の最初の前にtemplate_part (に類似) を追加したいと思います。<p>

the_content()内部にthenthe_content()がある場合があるため、前に template_part を追加することはできません:<figure><p>

<figure>....</figure>
// Want to insert here!
<p>.......</p>
<p>.......</p>
<p>.......</p>
<figure>....</figure>
<p>.......</p>
<p>.......</p>

これらは私が使用しようとした2つのコードですが、最初のコードの前に移動する方法がわかりません<p>:

方法 1:

$after = 1;
$content = apply_filters('the_content', $post->post_content);
if(substr_count($content, '<p>') > $after) {
    $contents = explode("</p>", $content); $p_count = 0;
    foreach($contents as $content){
        echo $content; if($p_count == $after){
            get_template_part('path/to/part');
        } $p_count++;
    }
}

方法 2:

$paragraphAfter[1] = get_template_part('path/to/part');
$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>";
}

できれば、上記または独自のより効率的な方法:]

4

1 に答える 1

0

汚いハックは次のようになります。

function add_the_string_filter( $content ) {
  $string_to_append = 'your string to add';
  $content = preg_replace('/<p>/',  $string_to_append . '<p>', $content , 1);

  return $content;
}

add_filter( 'the_content', 'add_the_string_filter' );

の最後のパラメーターはpreg_replacelimit で、最初に出現したものだけを置き換えるように指示します。

于 2013-04-30T05:21:36.600 に答える