如何定制Category_Description()?

时间:2015-09-12 作者:tali

在我正在开发的网站中,有50个类别+子类别,每个类别都有一个very long 描述文本,然后在归档页面中显示类别的所有标题及其描述,但显示每个类别的标题+每个描述的几个单词(摘录?)更有意义还有一个“阅读更多”链接,指向该类别的全部内容。

因此,我阅读了《codex》和网上的许多文章,但我仍然无法理解为什么WordPress中默认不存在这种功能。它仅适用于帖子-功能参考/摘录。

第二个问题是,解决这个问题最优雅的方法是什么?

有一些插件或代码片段可以让您将html编辑器添加到管理端的类别描述中,但选择“阅读更多”链接不起作用:(

是在category\\u description()函数上编写很长挂钩/过滤器的唯一解决方案吗?

详细说明:这是我的分类代码。php,-is所做的是显示父类别及其所有子类别(标题+完整描述)

    <?php 
    $CategoryPar = get_category( get_query_var( \'cat\' ) ); 
    $cat_id = $CategoryPar->cat_ID;
      $args = array(
      \'orderby\' => \'name\',
      \'child_of\'           => $cat_id,
      \'hide_empty\' => FALSE,
      \'order\' => \'ASC\'
            );
    $Ecategories = get_categories($args);

    echo\'<div class="cat-sub-title">\';

    foreach($Ecategories as $Ecategory) { 
     echo \'<p><a href="\' . get_category_link( $Ecategory->term_id ) . \'" title="\' . sprintf( __( "View all posts in %s" ), $Ecategory->name ) . \'" \' . \'>\' . $Ecategory->name.\'</a> </p> \';
     echo \'<div class="cat-sub-title-desc">\'. $Ecategory->description . \'</div>\';
                       } 
    echo\'</div>\';

    ?>

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

我一直在找一个过滤器category_description() 我还没有找到。你可以使用wp_trim_words() 具有category_description() 以获得所需的结果。例如:

$cat_ID = 4;

// wp_trim_words( $text, $num_words = 55, $more = null );
echo wp_trim_words( category_description( $cat_ID ), 55, \'<a href="\' . get_category_link( $cat_ID ) . \'">\' . __("Read more", "text-domain" ) . \'</a>\' );
更新:我找到了过滤器
add_filter( \'category_description\', \'cyb_trim_category_desc\', 10, 2 );
function cyb_trim_category_desc( $desc, $cat_id ) {

    // wp_trim_words( $text, $num_words = 55, $more = null );
    $desc = wp_trim_words( $desc, 55, \'<a href="\' . get_category_link( $cat_id ) . \'">\' . __("Read more", "text-domain" ) . \'</a>\' );

    return $desc;
}
Note: 如果使用通用the_archive_description() 在你的主题中,上面的过滤器非常适合分类archvie。

SO网友:Steven William

下面是使用jquery将此代码粘贴到函数上的解决方案。php文件。只有当您想截断woocommerce上类别页面的描述时,才可以这样做。

/**
 * @snippet       Truncate Short Description @ WooCommerce category description
 * @author        Steve Ayo
 */
 

 
add_action( \'woocommerce_after_main_content\', \'bbloomer_woocommerce_short_description_truncate_read_more\' );
 
function bbloomer_woocommerce_short_description_truncate_read_more() { 
   wc_enqueue_js(\'
        var show_char = 300;
        var ellipses = "... ";
        var content = $(".term-description").html();
        if (content.length > show_char) {
            var a = content.substr(0, show_char);
            var b = content.substr(show_char - content.length);
            var html = a + "<span class=\\\'truncated\\\' style=\\\'display:none\\\'>" + b + "</span> <span class=\\\'truncated-expander\\\'>" + ellipses + "<a href=\\\'#\\\' class=\\\'read-more\\\'>Read more</a></span>";
            $(".term-description").html(html);
        }
        $(".read-more").click(function(e) {
            e.preventDefault();
            $(".term-description .truncated").toggle();
            if($(".term-description .truncated").is(":visible")){
                $(".read-more").text("Show Less")
            } else{
                $(".read-more").text("Read More")
            }
        });

   \');
}

相关推荐

为内置钩子调用do_action和Apply_Filters是否安全?

我正在开发一个插件,它需要复制一些内置的WordPress逻辑。(此逻辑不能用任何内置方法调用,也不能独立连接到。)在这个动作序列中,WordPress的正常行为是调用动作挂钩(do_action(\'wp_login\', ...)) 和过滤器挂钩(apply_filters(\'login_redirect\', ...)).如果在对应于在Core中调用它们的时间点调用它们,那么直接从我的插件调用这些内置钩子是否安全(并且是可以接受的做法)?或者,其他与此相关的开发人员期望在非常特定的时间执行操作的风