【问题标题】:Change Wordpress %title variable output in previous_post_link在 previous_post_link 中更改 Wordpress %title 变量输出
【发布时间】:2018-12-04 18:23:48
【问题描述】:

我在我们的 WordPress 主题模板中使用此代码来显示上一篇似乎有效的帖子:previous_post_link('%link', '%title', true);

但是,%title 的内容包含了每篇文章的整个标题,很长,而且会打乱主题格式。

有没有办法修改 %title 的输出限制为 20 个字符?

【问题讨论】:

    标签: php wordpress wordpress-theming


    【解决方案1】:

    试试这个:

    function modify_title_previous_post_link($link) {
      preg_match('~>\K[^<>]*(?=<)~', $link, $match);  
      $title=$match[0];
      $title = substr($title,0,20);
      $title.="...";
      $link=preg_replace('/<a(.+?)>.+?<\/a>/i',"<a$1>$title</a>",$link); 
      return $link;
    }
    add_filter('previous_post_link','modify_title_previous_post_link');
    

    我不太擅长正则表达式,所以我使用this 回答 preg_matchthis 回答 preg_replace

    【讨论】:

      【解决方案2】:

      我不喜欢 preg_match 方法。

      您是否有理由必须将'%title' 传递给previous_post_link? Wordpress 函数只是对其进行文本替换,它并不是一个复杂的宏或任何东西。

      我会做更多类似的事情

       $prev_title = $get_previous_post()->post_title;
      
       if (strlen($prev_title) > 20)
           $prev_title = substr($prev_title , 0, 20) . '...';
      
       previous_post_link('%link', $prev_title, true);
      

      (我是 PHP 新手,所以可能有些语法错误,但这是基本思想)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多