WooCommerce隐藏某一类别在单一产品上显示

时间:2013-11-16 作者:Omar Tariq

如果我去

wp-content/themes/theme-name/woocommerce/single-product/meta.php

然后我看到这个代码:-

<?php
/**
 * Single Product Meta
 *
 * @author      WooThemes
 * @package     WooCommerce/Templates
 * @version     1.6.4
 */

if ( ! defined( \'ABSPATH\' ) ) exit; // Exit if accessed directly

global $post, $product;
?>
<div class="product_meta">

    <?php echo $product->get_categories( \', \', \' <span class="posted_in">\'.__(\'Category:\', GETTEXT_DOMAIN).\' \', \'.</span>\'); ?>

    <?php echo $product->get_tags( \', \', \' <span class="tagged_as">\'.__(\'Tags:\', GETTEXT_DOMAIN).\' \', \'.</span>\'); ?>

</div>
需要进行哪些修改以使其不显示类别,具有slug,certain-category-slug ?

我可以使用以下方法:-

get_categories( array( \'exclude\' => \'certain-category-slug\' ) )
但我相信WooCommerce$product->get_categories 与WordPress API不同get_categories 因为他们的论点不同。

1 个回复
最合适的回答,由SO网友:Nicolai Grossherr 整理而成

你说得对woocommerce: get_categories() 不同于wordpress: get_categories(), woocommerce函数使用get_the_term_list(), 因此,没有办法排除类别,这同样适用于get_the_category_list(). 您可以使用wp_list_categories() 对于这个,特别是看看这个example 从codex页面:

Display Categories Assigned to a Post

显示分配给按父子类别关系排序的帖子的类别(或来自其他分类法的术语)。类似于函数get\\u the\\u category\\u list(),它按名称对类别进行排序。此示例必须在循环内使用。

Code:

$taxonomy = \'category\';

// get the term IDs assigned to post.
$post_terms = wp_get_object_terms( $post->ID, $taxonomy, array( \'fields\' => \'ids\' ) );
// separator between links
$separator = \', \';

if ( !empty( $post_terms ) && !is_wp_error( $post_terms ) ) {

    $term_ids = implode( \',\' , $post_terms );
    $terms = wp_list_categories( \'title_li=&style=none&echo=0&taxonomy=\' . $taxonomy . \'&include=\' . $term_ids );
    $terms = rtrim( trim( str_replace( \'<br />\',  $separator, $terms ) ), $separator );

    // display post categories
    echo  $terms;
}
这不是一个完整的解决方案,您必须在此基础上构造一个函数,并使用新函数而不是内部的默认函数meta.php.

结束