用于在未设置摘录时更改摘录内容的挂钩

时间:2020-06-14 作者:Milos

标题几乎说明了这一切。我需要一个过滤器,我可以用来更改那些没有摘录集的帖子的摘录内容。

现在,我两个都试过了the_excerptget_the_excerpt, 它们都传递一个参数,在这两种情况下,所述参数都是空字符串。

也就是说,我需要挂接一个可以访问自动生成的except的过滤器,并让我更改它。

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

修改帖子摘录的合适挂钩是您已经尝试过的挂钩:get_the_excerptthe_excerpt, WordPress实际上使用前一种方法从完整的帖子内容中生成摘录,如果没有自定义或手动指定的帖子摘录,下面是wp-includes/default-filters.php:

add_filter( \'get_the_excerpt\', \'wp_trim_excerpt\', 10, 2 );
因此,如果要访问自动生成的摘录,请使用the_excerpt 胡克,你可以这样做:

add_filter( \'the_excerpt\', function ( $excerpt ) {
    return has_excerpt() ?
        \'Has custom excerpt: \' . $excerpt :
        \'Automatic excerpt: \' . $excerpt;
} );
但请注意,自动摘录可能不一定是最初由WordPress生成的,WordPress甚至可能不是生成摘录的那一个-插件可以完全覆盖它或只是定制它,就像您可以做的一样。

您可能已经猜到了,您可以删除默认的WordPress过滤器,然后使用您自己的回调生成您自己的;“自动”;摘录:

remove_filter( \'get_the_excerpt\', \'wp_trim_excerpt\', 10, 2 );

add_filter( \'get_the_excerpt\', function ( $excerpt, $post ) {
    return $post->post_excerpt ?
        \'Has custom excerpt: \' . $excerpt :
        \'Here, create your own excerpt.\';
}, 10, 2 );

相关推荐

如何在GET_POSTS()函数中通过某个页面的插件及其所有子页面获取页面ID数组?

我的主题中有一个自定义函数,可以创建动态sitemap.xml 文件我用的是$myVar = get_posts( array(...) ). 在该数组中,我需要排除一些页面。我想排除某些父页面及其所有子页面。我只想使用父页面slug来获取父页面和子页面的所有ID的数组。问题是:\'exclude\' => 在array() 仅接受ID数组。不是鼻涕虫。如何通过某种函数(或其他方式)通过父页面slug返回ID数组(包括父ID及其所有子项)来实现它?例如,假设父页面slug是abc.谢谢你了。