【问题标题】:WordPress excerpt_more filter hook is not working only on the very first post of my blog pageWordPress excerpt_more 过滤器挂钩不仅适用于我的博客页面的第一篇文章
【发布时间】:2014-10-03 05:27:55
【问题描述】:

我设置了一个独立于我的静态主页的博客页面。

我使用过滤器功能修改了博客页面上每篇文章摘录后的“[...]”链接。

为此,我使用了 WordPress 的“excerpt_more”钩子。

add_filter('excerpt_more', 'new_excerpt_more');
function new_excerpt_more($more) {
   global $post;
   return '... <br clear="all"/><a class="moretag" href="'. get_permalink($post->ID) . '">Continue Reading</a>';
}

我遇到的问题是,由于某种原因,这适用于每篇文章,除了博客页面的第一篇文章。

博客页面的第一篇文章是否有什么不同或特别之处使其无法通过此过滤器挂钩?

非常感谢您的帮助。

【问题讨论】:

    标签: wordpress filter hook


    【解决方案1】:

    试试这个:

     add_filter('excerpt_more', 'new_excerpt_more');
    
        function new_excerpt_more($more) {
    
           return '... <br clear="all"/><a class="moretag" href="'. get_permalink( get_the_ID() ) . '">Continue Reading</a>';
        }
    

    另外,如果在 Wordpress 中的帖子有手动摘录,excerpt_more 过滤器将不会被执行。所以总是建议检查一下,以防万一。

    【讨论】:

    • 嗨,托马斯。你是说我应该删除“global $post;”吗?语句,并将 "$post->ID" 更改为 "get_the_ID()" ?
    • 我试过了,但没有解决问题。我目前认为这可能与 WordPress 主题默认的工作方式有关。但是感谢您提醒我,我不需要在函数内部使用“global $foo”,因为有内置的 WP 函数可以获取这些变量。
    • @LeonardShelby,摘录是自动生成的吗?因为如果内容太短,取决于您如何实现它,不会添加“阅读更多”。
    • 是的,摘录是自动生成的。它是 Genesis 儿童主题 Enterprise Pro。我不认为这是内容太短的问题。第一篇文章的摘录实际上比所有其他文章的摘录都长,为 86 个字。出于某种原因,第一篇文章的摘录显示为文章的第一个完整段落,而不是 WordPress 定义的默认摘录大小,即前 55 个单词。所有其他帖子的摘录默认为 55 个字。
    • 我记得有一次我遇到了类似的问题,它是由其中一篇文章的手动摘录生成的。你能添加循环的代码吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多