当前位置: 首页 > 知识库问答 >
问题:

获取并显示WooCommerce中的产品类别特色图像

陶瀚玥
2023-03-14

我正在制作我的第一个主题,感谢Loop和WooCommerce的SDK提供的所有帮助,一切都进展得非常快。然后今天我花了一整天的时间没能做像展示图片这样简单的事情。。。经过一整天的努力,我学到的唯一一件事是,WP似乎无法提供获取类别图像的手段,许多人已经问了这个问题很多年了,但我仍然找不到一种方法来真正做到这一点……:(

我想做的是在我的商店上方创建一个滑块,显示精选商店类别的图像。我希望能够输入术语名称列表,并在此基础上,我的函数应该以类别图像的形式生成到产品类别的链接。

听起来很简单...事实证明,这离简单还远着呢...在你把这个问题标记为重复问题之前,让我解释一下为什么我要问这个问题...

我找到的一些解决方案要求我知道术语的ID,而不是tern名称。有人说“使用自定义术语搜索获取id”,但没有解释如何获取id。我知道如何为帖子定制基于分类的查询,但不知道如何为术语定制基于分类的查询。文档在传递给查询项的值方面让我感到困惑:(

其他解决方案要求我首先找到一个特定类别的产品,然后从那里向后找到产品的类别图像(????)

当然还有人们喜欢给出的默认答案:“哦,你在设计你自己的主题,想显示类别图标吗?很简单,只要下载一个插件就可以了。”。现在我为什么不考虑把别人的插件加入我的主题呢?(脸掌)

其他答案只是展示了如何打印术语名称列表,但到目前为止,还没有任何答案能够让我做本应如此简单的事情:

$categories = array("software", "plugins", "merch");
foreach($categories as $cat) {
    $term_id = get_term_id($cat);
    $term_image = get_term_featured_image($term_id);
    echo '<img src="'.$term_image.'">;
    }

获取术语的第一个问题是,用于获取术语id的wordpress函数仅适用于类别分类法,但我需要查询WooCommerce的产品分类法。其次,即使你有一个id,似乎也没有一个选项来获取缩略图/特色图片。那么现在呢?

因此,我进入了低级阶段,开始使用$wpdb直接查询表,并确定我在term_id 94之后的术语。我在termmeta表中查询缩略图的post ID,发现它是905。现在我转到我的posts表,发现。。。。没有后输入905!世界跆拳道联盟?所以我对另外两个类别做了这项研究,发现了相同的东西。由于没有与图像id匹配的帖子,因此在尝试提取帖子附件时,查找图像id不会返回任何内容。。。

这怎么这么难?WordPress让其他一切都变得非常简单,然而这个简单的发声任务似乎几乎不可能做到...所以现在你看到我已经谷歌到死,并挣扎着我的背部已经关闭,我问这个问题出于绝望:

如何获取一组产品名称并将其转换为一组url以显示类别的图像?

谢谢

共有1个答案

戚甫
2023-03-14

最短的方法是使用woocommerce\u subcategory\u thumbnail()专用功能:

$product_categories = array("software", "plugins", "merch");

// Loop through the product categories
foreach( $product_categories as $category ) {
    // Get the WP_term object
    $term = get_term_by( 'slug', sanitize_title( $category ), 'product_cat' );

    // Get the term link (if needed)
    $term_link = get_term_link( $term, 'product_cat' );

    // Display the product category thumbnail
    woocommerce_subcategory_thumbnail( $term );
}

另一种分步方式将显示带有名称的链接产品类别图像:

$product_categories = array("software", "plugins", "merch");

// Loop through the product categories
foreach( $product_categories as $category ) {
    // Get the WP_term object
    $term = get_term_by( 'slug', sanitize_title( $category ), 'product_cat' );

    // Get the term link (if needed)
    $term_link = get_term_link( $term, 'product_cat' );

    // Get the thumbnail Id
    $thumbnail_id  = (int) get_woocommerce_term_meta( $term->term_id, 'thumbnail_id', true );

    if( $thumbnail_id > 0 ) {
        // Get the attchement image Url
        $term_img  = wp_get_attachment_url( $thumbnail_id );

        // Formatted thumbnail html
        $img_html = '<img src="' . $term_img . '">';
    } else {
        $img_html = '';
    }
    echo '<a href="' . $term_link . '">' . $img_html . $term->name . '</a><br>';
}

两种方法都有效…

要获取所有产品类别WP\u Term对象并显示它们的缩略图,请执行以下操作:

// Get all product categories
$product_category_terms = get_terms( array(
    'taxonomy'   => "product_cat",
    'hide_empty' => 1,
));

foreach($product_category_terms as $term){
    // Get the term link (if needed)
    $term_link = get_term_link( $term, 'product_cat' );

    ## -- Output Example -- ##

    // The link (start)
    echo '<a href="' . $term_link . '" style="display:inline-block; text-align:center; margin-bottom: 14px;">';

    // Display the product category thumbnail
    woocommerce_subcategory_thumbnail( $term );

    // Display the term name
    echo $term->name;

    // Link close
    echo '</a>';
}
 类似资料:
  • 我正在尝试在一个自定义主题中实现wooCommerce,我正在基于bootstrap框架构建该主题(因为我对事物的外观很挑剔),所以我正在尝试重新定位wooCommerce产品缩略图库图像。我知道wooCommerce中提供的各种函数和钩子,如wc-template-hooks.php中列出的函数和钩子,它们工作得非常好,但在我的特殊情况下除外。我使用和钩子将产品信息包装在我的引导框架中,就像这样

  • 我目前正在使用以下代码获取WooCommerce产品类别: 当前显示所有类别,但我希望仅显示子类别。 例如,如果您在“类别1”页面上,则该页面应仅显示该类别中的所有子级。 我在这里看过很多例子,但都找不到适合我需要的东西。

  • 我试图通过WoodPress主题中的一个函数从WooCommerce获取产品类别 上面的代码返回一些产品,但是产品类别。 当我包括

  • 对于我的WC产品页面,我需要向body标记添加一个类,以便执行一些自定义样式。这是我为这个创建的函数。。。 …但是我怎么才能拿到猫的身份证呢?

  • 我似乎在为木业的某些东西而苦苦挣扎。 我已经创建了一个单一的产品页面模板,当前显示产品的特色图像在页面顶部的横幅。 但我想我得先找到分类?我不确定从这里到哪里去。 如果有任何帮助,我们将不胜感激。

  • 我正在尝试创建一个页面与木商产品类别在标签。 我的选项卡菜单正在工作,但我需要在每个选项卡内容区域中运行一个查询到相应的类别。 但当我单击每个选项卡时,选项卡内容显示了类别中不属于当前选项卡的所有帖子。我没有得到正在出现的问题,请帮助我解决问题 下面是我的代码: 问题是它显示每个类别的所有post。我粘在上面了..请帮帮我