从使用get_the_excerpt()检索的摘录中删除省略号

时间:2017-06-29 作者:MoritzLost

我使用一个自定义的WP\\u查询在没有主循环的页面上显示一个包含最近帖子的旋转木马。在WP\\u查询循环中,我使用get_the_excerpt() 检索这些帖子的自动生成摘录。这些帖子没有自定义摘录集,也没有<!--more--> 标签然而,这些生成的摘录包含一个尾部省略号(...) (不是实际的省略号,而是三个点)结尾。

根据所有相关帖子和抄本,我应该能够通过在excerpt_more 钩我将此代码添加到functions.php:

add_filter(\'excerpt_more\', \'change_excerpt_more\', 1);
function change_excerpt_more($more){
  return \'\';
}
但它什么都没做。我尝试了这方面的各种变体(返回测试字符串,使函数不接受参数,更改add_filter 调用),但生成的摘录根本不会更改。

我做错什么了吗?筛选器是否不适用于自定义WP\\U查询?我怎样才能解决这个问题?

谢谢

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

中的第三个字段add_filter() 是优先级。默认WP挂钩优先级为10。您可以完全忽略1,也可以通过将其作为第4个字段传递来声明函数接受的参数数。add_filter(\'excerpt_more\', \'change_excerpt_more\', 10, 1);

或默认值:add_filter(\'excerpt_more\', \'change_excerpt_more\');

<小时>

re: questions in comments

仍然在想为什么没有通过优先权它就不能工作

您正在传递优先级,您遇到的问题是您正在传递优先级(1), 而且它可能比使用这个钩子的其他东西要低。因此,它可能运行得很好,但只是在运行后被覆盖。

这个add_filteradd_action 方法分为四部分:

筛选器或操作,由定义apply_filters(\'name\'..., 和do_action(\'name\'..., 分别为change_excerpt_more()do_action 和apply_filter)1 作为优先事项,因为它在第三个领域。假设你想定义单参数($more), 您需要显式传递优先级或空字段(wordpress将使用默认优先级)。

您的代码:

此:

add_filter(\'excerpt_more\', \'change_excerpt_more\', 1);

与以下内容相同:

add_filter(\'excerpt_more\', \'change_excerpt_more\', 1, 1);


要定义单个参数,如下所示:

add_filter(\'excerpt_more\', \'change_excerpt_more\', , 1);

这与:

add_filter(\'excerpt_more\', \'change_excerpt_more\', 10, 1);

从那以后excerpt more 只有一个参数要传递,这与:add_filter(\'excerpt_more\', \'change_excerpt_more\');

优先级成为应用于挂钩的过滤器/操作数组中的数字键。按这些数字索引排序,它们按顺序运行。因为它只是一个用作索引的(int),所以唯一的限制是PHP_INT_MAX. Wordpress默认为10, 允许挂钩在它们之前或之后轻松运行。在没有其他任何东西使用挂钩的情况下,默认优先级将在任何核心使用之后运行,因为它是在之后添加到挂钩的。为了确保在默认情况下添加任何内容之后运行钩子,可以传递更高的优先级。

但你的问题是你的优先级太高了(1) 由于该值位于add_filter. 所以它正在运行,然后任何在默认情况下挂钩的东西(可以是主题、其他插件,甚至是核心)都会在它之后运行。

要知道所有事情都与它们的优先级挂钩,你可以print_r() $wp_filter 将钩子的名称作为数组的键传递给它。

function filter_print() {
    global $wp_filter;
    print_r( $wp_filter[\'excerpt_more\'] );
    die();
}
add_action( \'shutdown\', \'filter_print\' );
[代码来自Howdy_McGee 在…上this WPSE answer]

结束

相关推荐

Excerpt for pages not showing

我正在创建一个简单的wordpress主题,需要页面摘录。我已经尝试了许多主题的代码,其中一些是在wordpress SO上解决的,但没有任何效果。因为我从头创建了主题,所以添加了一个空白函数。php文件,并将以下代码放入其中。add_action( \'init\', \'my_add_excerpts_to_pages\' ); function my_add_excerpts_to_pages() { add_post_type_support( \'page\', \'ex