您只需要添加一些条件来应用或不应用过滤器。例如,如果不想在类别存档页面上应用修剪,一种可能的解决方案是:
add_filter( \'category_description\', \'cyb_trim_category_desc\', 10, 2 );
function cyb_trim_category_desc( $desc, $cat_id ) {
// Apply only if we are not in category archive template
if( ! is_category() ) {
// wp_trim_words( $text, $num_words = 55, $more = null );
$desc = wp_trim_words( $desc, 55, \'...<p class="wrap-more-link"><a class="more-link" href="\' . get_category_link( $cat_id ) . \'">\' . __("Read more >>", "text-domain" ) . \'</a></p>\' );
}
return $desc;
}
或者,如果要仅对特定页面模板应用修剪:
add_filter( \'category_description\', \'cyb_trim_category_desc\', 10, 2 );
function cyb_trim_category_desc( $desc, $cat_id ) {
// Apply only if we the current page use my-page-template.php
if( is_page_template( \'my-page-template.php\' ) ) {
// wp_trim_words( $text, $num_words = 55, $more = null );
$desc = wp_trim_words( $desc, 55, \'...<p class="wrap-more-link"><a class="more-link" href="\' . get_category_link( $cat_id ) . \'">\' . __("Read more >>", "text-domain" ) . \'</a></p>\' );
}
return $desc;
}
你只需要
define when you want to apply the trimming and apply the propper conditional.
一个可能的问题是您正在使用category.php
用于类别列表。该模板旨在显示属于某个类别的帖子列表,您应该使用它。您应该在另一个模板文件中构建类别列表,可能是custom page template, 所以你可以使用is_page_template()
有条件的,就像上面的最后一个例子一样。
更新正如我之前所说,您应该避免使用category。php模板文件列出您的类别。类别php模板文件旨在列出属于特定类别的帖子,您可能会因为将其用于其他目的而遇到问题。
例如,在您添加到问题的图像中,我可以看到类category-2
在主体元素上。这意味着WordPress进行了一个查询,以从ID=2的类别中获取帖子,但当类别为时。php模板已到达,您浪费了该查询,并创建了另一个查询来列出类别。这是在浪费耗费金钱的资源;此外,你最终可能会遇到问题,就像你正在经历的一样。如果ID=2的类别没有帖子,会发生什么情况?在你的主题/插件/WordPress核心中,这种情况的逻辑是什么?
相反,您应该使用特定的页面模板文件来构建类别列表。例如,您可以创建模板页面类别列表。php:
<?php
/**
* Template Name: Categories list page
*/
// Here the code to build the categories list
?>
现在,创建一个新页面,选择;类别列表页;template和Instruce在筛选器中为类别描述生成条件:
add_filter( \'category_description\', \'cyb_trim_category_desc\', 10, 2 );
function cyb_trim_category_desc( $desc, $cat_id ) {
// Apply only if we the current page use my-page-template.php
if( is_page_template( \'page-categories-list.php\' ) ) {
// wp_trim_words( $text, $num_words = 55, $more = null );
$desc = wp_trim_words( $desc, 55, \'...<p class="wrap-more-link"><a class="more-link" href="\' . get_category_link( $cat_id ) . \'">\' . __("Read more >>", "text-domain" ) . \'</a></p>\' );
}
return $desc;
}
现在,您应该拥有类别页面列表,其中包含描述摘录和类别存档,其中包含完整的描述,如果类别有帖子或没有帖子,则不会出现问题。更重要的是,在不浪费资源的情况下,查询您不打算使用的帖子。