虽然这是以Wordpress为导向的,但我认为PHP的基础更像是Stackoverflow问题:
我想在帖子的第一个include()
之前添加template_part(类似于<p>
)。
我无法在the_content()
之前添加template_part,因为the_content()
内部有时是<figure>
,然后是<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>";
}
最好是更有效的方法,无论是从上面还是你自己的方法:]
答案 0 :(得分: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
的最后一个参数是限制,它告诉我只替换第一次出现。