如何从自动生成的摘录中隐藏<pre>和<table>内容?

时间:2013-04-22 作者:fuxia

自动生成的摘录只需从帖子内容中提取前x个字符,并在某个点将其截断。

当有tablepre 在这一部分中,摘录大部分时间看起来都很无用。如何在自动摘录中隐藏这些元素的内容?

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

要仅在生成自动摘录时过滤内容,必须链接挂钩:

钩住get_the_excerpt 并为注册筛选器the_content.示例:

add_filter( \'get_the_excerpt\', \'t5_excerpt_clean_up\', 1 );

/**
 * Register handler for auto-generated excerpt.
 *
 * @wp-hook get_the_excerpt
 * @param   string $excerpt
 * @return  string
 */
function t5_excerpt_clean_up( $excerpt )
{
    if ( ! empty ( $excerpt ) )
        return $excerpt;

    add_filter( \'the_content\', \'t5_excerpt_content\' );

    return $excerpt;
}
/**
 * Strip parts from auto-generated excerpt.
 *
 * @wp-hook the_content
 * @param   string $content
 * @return  string
 */
function t5_excerpt_content( $content )
{
    // Remove immediately; maybe the next post doesn\'t 
    // use an excerpt, but the full content.
    remove_filter( current_filter(), __FUNCTION__ );

    // Fails with nested tables. Just don\'t do that. :)    
    return preg_replace( \'~<(pre|table).*</\\1>~ms\', \'\', $content );
}

结束

相关推荐

正在删除[...]仅在某些地方来自get_the_excerpt()返回的摘录

为了更好的SEO,我希望在元描述中使用帖子的摘录,所以我使用get\\u the\\u extract()函数来获取帖子的摘录。然而,我注意到,最后它添加了[…]当帖子的内容没有用More分隔符分隔,并且长度超过配置的最大长度时。是否有一种干净的方法来删除此[…]在节选的最后?该函数似乎没有一个布尔参数来指定您是否需要它或任何类似的参数。**更新**我不想删除[…]从主索引。php。我只想在某些情况下(在元描述中)删除它,而在其他情况下保留它。因此,钩子解决方案在这种情况下不起作用。谢谢