0

虽然这是面向 Wordpress 的,但我认为 PHP 的基础更多的是 Stackoverflow 问题:

我想在帖子include()的第一个之前添加一个 template_part(类似于 ) 。<p>

我之前不能添加 template_part ,the_content()因为里面the_content()有时是<figure>then <p>

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

这是我尝试使用的两个代码,但不知道如何在第一个代码之前使用它<p>

方法一:

$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++;
    }
}

方法二:

$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_replace是限制,它告诉只替换第一次出现。

于 2013-04-30T05:21:36.600 回答