1

我正在尝试使用 woocommerce 插件向 Wordpress 主题添加一些自定义。我正在尝试对商店页面进行风格化,以便在产品顶部或左侧有一个类别列表。当您从 woocommerce 管理设置中的目录页面启用类别选项时,它会利用 content_product_cat2.php 模板文件在 woocommerce 产品循环中显示产品类别缩略图。我已经移动了那个 php 文件并开始编辑它并获得结果。我已删除缩略图,但我无法将标题从网格格式或循环之外取出。我愿意为我的functions.php添加一些钩子,但我没有在woocommerce钩子参考中看到任何看起来像他们会做的钩子。可能是编辑此模板并使用挂钩将其放置在循环之前的组合。这是该页面的链接。我正在使用它,这里是 php 文件的内容:

<?php
/**
 * The template for displaying product category thumbnails within loops.
 *
 * Override this template by copying it to yourtheme/woocommerce/content-product_cat.php
 *
 * @author      WooThemes
 * @package     WooCommerce/Templates
 * @version     1.6.4
 */




global $woocommerce_loop;

// Custom Edits

if ( is_shop() && in_array( $category->slug, array( 'fakeie' ) ) ) {
return;
}


// Store loop count we're currently on
if ( empty( $woocommerce_loop['loop'] ) )
$woocommerce_loop['loop'] = 0;

// Store column count for displaying the grid
if ( empty( $woocommerce_loop['columns'] ) )
$woocommerce_loop['columns'] = apply_filters( 'loop_shop_columns', 4 );

// Increase loop count
$woocommerce_loop['loop']++;
?>
<li class="product <?php
if ( $woocommerce_loop['loop'] % $woocommerce_loop['columns'] == 0 )
    echo 'last';
elseif ( ( $woocommerce_loop['loop'] - 1 ) % $woocommerce_loop['columns'] == 0 )
    echo 'first';
?>">

<?php do_action( 'woocommerce_before_subcategory', $category ); ?>

<a href="<?php echo get_term_link( $category->slug, 'product_cat' ); ?>">

    

    <h3 style="float:left;">
        <?php echo $category->name; ?>
        <?php if ( $category->count > 0 ) : ?>
            <mark class="count">(<?php echo $category->count; ?>)</mark>
        <?php endif; ?>
    </h3>

    <?php
        /**
         * woocommerce_after_subcategory_title hook
         */
        do_action( 'woocommerce_after_subcategory_title', $category );
    ?>

</a>

<?php do_action( 'woocommerce_after_subcategory', $category ); ?>

</li>

谢谢伙计们......我知道有人会有这方面的经验。

编辑-好的,所以我意识到编辑 content_product_cat.php 文件可能不是最好的方法。Jay 在下面提到最好编辑 content_product.php 文件。虽然我最初认为这也是一个很好的解决方案,但我意识到它不会完成我想要做的事情。编辑 content_product.php 只会在循环内进行编辑,我需要在循环之前显示我的类别,这样它们就不会落入循环的网格格式.....任何新想法?

4

2 回答 2

4

一种替代方法是您可以禁用默认的 woocommerce 类别视图并且不使用模板。相反,您可以编写自定义代码并获取类别列表并按照您想要的方式设置样式并将其添加到 woocommerce 产品网格中。下面是你如何做到的。

<?php $all_categories = get_categories( 'taxonomy=product_cat&hide_empty=0&hierarchical=1' );
                    foreach ($all_categories as $cat) {
                        if($cat->category_parent == 23) {                           
                                                        $category_id = $cat->term_id;
                            $thumbnail_id   = get_woocommerce_term_meta( $cat->term_id, 'thumbnail_id', true );
                            $image = wp_get_attachment_url( $thumbnail_id );
                                echo '<li><a href="'. get_term_link($cat->slug, 'product_cat') .'"><img src="'.$image.'" alt="'. $cat->name .'"/><div>'. $cat->name .'</div></a>';
                        }
                    }
?>
于 2013-04-12T03:24:56.803 回答
1

您可以添加到您的functions.php:

add_action('woocommerce_before_shop_loop','showcats');


function showcats()
{
    //list terms in a given taxonomy using wp_list_categories (also useful as a widget if using a PHP Code plugin)

$taxonomy     = 'product_cat';
$orderby      = 'name';
$show_count   = 0;      // 1 for yes, 0 for no
$pad_counts   = 0;      // 1 for yes, 0 for no
$hierarchical = 1;      // 1 for yes, 0 for no
$title        = '';

$args = array(
  'taxonomy'     => $taxonomy,
  'orderby'      => $orderby,
  'show_count'   => $show_count,
  'pad_counts'   => $pad_counts,
  'hierarchical' => $hierarchical,
  'title_li'     => $title
);

?>
<ul>
<?php wp_list_categories( $args ); ?>
</ul>
<?
}

function showcatlist()
{
    if(is_shop()) showcats();
}   

功能 showcats 来自:http ://wordpress.org/support/topic/plugin-woocommerce-excelling-ecommerce-category-list 。阅读更多:http ://codex.wordpress.org/Template_Tags/wp_list_categories 。要更改列表的样式,您将阅读:

您可以通过将 title_li 参数设置为空字符串来删除最外层的项目和列表。您需要自己将输出包装在有序列表 (ol) 或无序列表中(参见上面的示例)。如果您根本不想要列表输出,请将样式参数设置为无。

除了 wp_list_categories,您还可以使用 get_categories http://codex.wordpress.org/Function_Reference/get_categories并自己编写 html 输出。这与首先​​提供正确答案的Jay Bhatt所做的相同。

于 2013-09-09T21:59:05.510 回答