WP_TRIM_WORDS删除仪表盘图标

时间:2020-03-15 作者:quantum_leap

我有一个奇怪的问题。我将dashicons包括在前端到

add_action( \'wp_enqueue_scripts\', \'load_dashicons_front_end\' );
   function load_dashicons_front_end() {
   wp_enqueue_style( \'dashicons\' );
}
然后,我在菜单项的导航标签中输入dashicon HTML,例如:

<span class="dashicons dashicons-admin-home"></span> Home
我还在博客存档中包含一些代码,将文章标题截断为前7个单词:

add_filter( \'the_title\', \'wpse_75691_trim_words\' );

function wpse_75691_trim_words( $title )
{
   // limit to 7 words
   return wp_trim_words( $title, 7, \'...\' );
}
但当trim功能运行时,dashicons会消失。它适用于整个网站,除了我有截断代码的博客页面。我想我也有类似的问题this post.

但我不知道如何继续。我已经在博客档案上运行了这个功能,所以问题只存在于那里。

2 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

您的问题是,您的过滤器正在将所有标题修剪为7个“单词”。这包括博客帖子、页面、菜单项标签、修订名,甚至产品名称(如果您有产品的话)。

您需要调整过滤器,使其不那么咄咄逼人,只针对需要截断的标题。例如,以下代码将仅截断标题:

主循环中的帖子


function wpse_360758_trim_words( $title, $post_id ) {
    if ( is_admin() ) {
        return $title;
    }

    if ( in_the_loop() && \'post\' === get_post_type( $post_id ) ) {
        $title = wp_trim_words( $title, 7, \'...\' );
    }

    return $title;
}
add_filter( \'the_title\', \'wpse_360758_trim_words\', 10, 2 );

SO网友:quantum_leap

我将发布我从中找到的解决方案this thread, 似乎正在工作,但没有剥离dashicon标记:

add_filter( \'the_title\', \'wpse_75691_trim_words\' );

function wpse_75691_trim_words( $title )
{
    // limit to 7 words
    return  force_balance_tags( html_entity_decode( wp_trim_words(htmlentities($title), 7, \'...\' ) ) );
}