【发布时间】:2016-08-17 04:12:16
【问题描述】:
我使用来自另一个 question 的自定义摘录,它可以让您控制要显示的段落数量而不是字符长度。它还包括“阅读更多”链接。检查代码后,我发现这个链接被<p> 标签包围。但是,我想在“阅读更多”链接周围的这个特定的<p> 标记中添加一个类。
这是有问题的代码。
if ( ! function_exists( 'custom_wp_trim_excerpt' ) ) :
function custom_wp_trim_excerpt($blogo_excerpt) {
global $post;
$raw_excerpt = $blogo_excerpt;
if ( '' == $blogo_excerpt ) {
$blogo_excerpt = get_the_content('');
$blogo_excerpt = strip_shortcodes( $blogo_excerpt );
$blogo_excerpt = apply_filters('the_content', $blogo_excerpt);
// Here we choose how many paragraphs do we want to cutthe excerpt at, This part thanks to Clément Malet
$blogo_excerpt = "<p>$blogo_excerpt</p>";
$wanted_number_of_paragraph = 1;
$tmp = explode ('</p>', $blogo_excerpt);
for ($i = 0; $i < $wanted_number_of_paragraph; ++$i) {
if (isset($tmp[$i]) && $tmp[$i] != '') {
$tmp_to_add[$i] = $tmp[$i];
}
}
$blogo_excerpt = implode('</p>', $tmp_to_add) . '</p>';
$blogo_excerpt = str_replace(']]>', ']]>', $blogo_excerpt);
$excerpt_end = '<a href="'. esc_url( get_permalink() ) . '">Read More</a>';
$excerpt_more = apply_filters('excerpt_more', ' ' . $excerpt_end);
//$pos = strrpos($wpse0001_excerpt, '</');
//if ($pos !== false)
// Inside last HTML tag
//$wpse0001_excerpt = substr_replace($wpse0001_excerpt, $excerpt_end, $pos, 0);
//else
// After the content
$blogo_excerpt .= $excerpt_end;
return $blogo_excerpt;
}
return apply_filters('custom_wp_trim_excerpt', $blogo_excerpt, $raw_excerpt);
}
endif;
remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'custom_wp_trim_excerpt');
此外,我试图理解这段代码中的一些行。例如,我了解到“explode”将字符串分解为数组。因此,在这段代码中,“分解”将整个内容分解为每个段落,并将每个段落放入一个数组中。此外,“内爆”将数组返回为字符串。换句话说,“内爆”将每个段落重新组合在一起以构成整个内容。
最后,我想我可能知道应该在哪里编辑代码以将类添加到围绕“阅读更多”链接的<p> 标记
// After the content
$blogo_excerpt .= $excerpt_end;
因为“$excerpt_end”是“阅读更多”链接,而“.=”将“阅读更多”链接附加到帖子摘录。
但是,经过反复试验,我仍然无法弄清楚如何将类添加到“阅读更多”链接周围的 <p> 标记中。
请帮忙!
【问题讨论】:
标签: php css wordpress function