我正在尝试创建两个函数,一个用于捕获某些内容的第一段,另一个用于捕获其余部分,但我遇到了一个难题。
我的单曲里有这个。php:
<div class=\'the_content\'>
<?php the_content(); ?>
</div>
其产生:
<div class="the_content">
<p>The content .....</p>
<p>The content .....</p>
<p>The content .....</p>
</div>
每个段落都用
<p>
标签我假设我可以简单地打破
explode()
基于字符串的内容
</p>
, 理论上,将内容分成几段,但
all 内容位于第一个结果数组元素中。我调查过了没有
<p>
HTML编辑或数据库条目中的标记。两者看起来都像:
The Content .....
The Content .....
The Content .....
注:
存在换行符,但不存在<p>
标签Wordpress在哪里添加<p>
回来?它是如何找到换行符的,如何将函数挂接到该换行符中?
<小时>
FYI
以下是失败的函数,它密切基于
the_content()
功能:
function get_first_paragraph(){
$content = $firstcontent = get_the_content();
$content = str_replace(\']]>\', \']]>\', $content);
$content = explode(\'</p>\',$content);
return $content[0];
}
最合适的回答,由SO网友:kaiser 整理而成
这些段落由wpautop()
函数,连接到the_content
, the_excerpt()
&;comment_text
以及\'term_description\'
用于分类。
@javipas链接的插件为添加这个插件付出了巨大的努力,但这是一个很好的例子(+1)。您可以(稍微修改一下)从中删除以下部分:
// The init function
function wpse24553_add_p_the_content()
{
add_filter( \'the_content\', \'wpse24553_p_the_content\' );
add_filter( \'the_content_feed\', \'wpse24553_p_the_content\' );
}
add_action( \'init\', \'wpse24553_add_p_the_content\' );
// The actual modification function
function wpse24553_p_the_content( $the_content )
{
global $post;
$content_by_p = preg_split( \'/<\\/p>/is\', $the_content );
$i = 0;
// Set a var to count until the targeted <p> is met - change this to your needs
// Set to empty \'\' if you want to modify every paragraph
$targeted_p = 1;
static $new_content = \'\';
foreach ( $content_by_p as $key => $p )
{
$i++;
// abort and return the modified content if we\'re beyond the targeted <p>
if ( $i > $targeted_p )
{
$new_content .= $p;
continue;
}
// Remove empty space at the end of a paragraph, then remove original <p>-tag
$p = rtrim( $p );
$p = preg_replace( \'/<p>/is\', \'\', $p );
// Wrap replacements in new <p>-tags, so it validates
$new_content .= \'<p class="paragraph-link"><a name="p-\'.$key.\'"></a>\';
// Prepend the graf with an anchor tag
$new_content .= \'<a ref="permalink" title="Permalink to this paragraph" href="\'.get_permalink( $post->ID ).\'#p-\'.$key.\'">#</a>;
$new_content .= $p;
$new_content .= \'</p>\';
}
// Return the new content
return $new_content;
}
注释:
该函数需要放在函数中。php您需要自己用一个段落来修改函数和添加/删除/修改的内容(Q中没有用例)当前未测试该功能
SO网友:Michael
Wordpress在哪里添加<p>
回来了?
afaik,通过应用“the\\u content”过滤器。
函数的可能示例:
function get_first_paragraph() {
$text = apply_filters(\'the_content\', get_the_content() );
$paragraphs = explode(\'</p>\', $text);
$first_paragraph = array_shift($paragraphs).\'</p>\';
return $first_paragraph;
}
以及:
function get_last_paragraphs() {
$text = apply_filters(\'the_content\', get_the_content() );
$paragraphs = explode(\'</p>\', $text);
$first_paragraph = array_shift($paragraphs).\'</p>\';
$rest_paragraphs = implode(\'</p>\', $paragraphs);
return $rest_paragraphs;
}