在 Woocommerce 中获取并显示产品类别特色图片
Get and display the product category featured image in Woocommerce
我正在制作我的第一个主题,感谢 The Loop 和 WooCommerce 的 SDK 提供的所有帮助,一切都进展得非常快。然后今天我花了一整天的时间来做一些像显示图像这样简单的事情……经过一整天的努力,我唯一学到的是 WP 似乎没有提供获取类别图像的方法,而且很多人都有问这个问题很多年了,但我仍然找不到真正做到这一点的方法......
:(
我想做的是在我的商店上方创建一个滑块,显示精选商店类别的图像。我希望能够输入术语名称列表,并基于此我的函数应该以类别图像的形式生成指向产品类别的链接。
听起来很简单...事实证明,它远非简单...在您离开并将此标记为重复问题之前,让我解释一下我为什么要问它...
我找到的一些解决方案要求我知道术语的 ID,而不是燕鸥名称。有人说 "Get the id's using a custom term search" 但没有解释如何。我知道如何对 post 进行基于自定义分类的查询,但不知道如何对术语进行查询。文档在传递给查询词的值方面让我感到困惑:(
其他解决方案要求我首先找到特定类别的产品,然后从那里反向查找产品的类别图像 (?????)
当然还有人们喜欢为所有事情给出的默认答案:"Oh you are designing your own theme and want to show category icons? Simple, just download a plugin to do that for you"。现在我为什么不考虑将其他人的插件添加到我的主题中呢? (捂脸)
其他答案只是展示了如何打印术语名称列表,但到目前为止还没有任何东西能让我做 应该就这么简单:
$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 的 product_cat 分类法。其次,即使您有 ID,似乎也没有获取 thumbnail/featured 图像的选项。那么现在呢?
所以我进入低级别并开始使用 $wpdb 直接查询 tables 并且我确定我之后的术语有 term_id 94。我查询 termmeta table缩略图的 post ID,我发现它是 905。现在我转向我的 post s table 并发现......没有 post 条目 905!什么鬼?所以我对另外两个类别执行此操作并找到相同的东西。查找图像的 ID 导致尝试提取 post 的附件时没有返回任何内容,因为没有 post 匹配图像的 ID...
为什么这么难? WordPress 使其他一切变得如此简单,但这个看似简单的任务似乎几乎不可能完成......所以现在你看到我已经用谷歌搜索了这个并且已经挣扎了我的背后,我提出这个问题是出于绝望:
如何获取 product_cat 个术语名称数组并将其转换为 url 个术语名称数组以显示类别的图像?
谢谢
最短的方法是使用woocommerce_subcategory_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_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>';
}
我正在制作我的第一个主题,感谢 The Loop 和 WooCommerce 的 SDK 提供的所有帮助,一切都进展得非常快。然后今天我花了一整天的时间来做一些像显示图像这样简单的事情……经过一整天的努力,我唯一学到的是 WP 似乎没有提供获取类别图像的方法,而且很多人都有问这个问题很多年了,但我仍然找不到真正做到这一点的方法...... :(
我想做的是在我的商店上方创建一个滑块,显示精选商店类别的图像。我希望能够输入术语名称列表,并基于此我的函数应该以类别图像的形式生成指向产品类别的链接。
听起来很简单...事实证明,它远非简单...在您离开并将此标记为重复问题之前,让我解释一下我为什么要问它...
我找到的一些解决方案要求我知道术语的 ID,而不是燕鸥名称。有人说 "Get the id's using a custom term search" 但没有解释如何。我知道如何对 post 进行基于自定义分类的查询,但不知道如何对术语进行查询。文档在传递给查询词的值方面让我感到困惑:(
其他解决方案要求我首先找到特定类别的产品,然后从那里反向查找产品的类别图像 (?????)
当然还有人们喜欢为所有事情给出的默认答案:"Oh you are designing your own theme and want to show category icons? Simple, just download a plugin to do that for you"。现在我为什么不考虑将其他人的插件添加到我的主题中呢? (捂脸)
其他答案只是展示了如何打印术语名称列表,但到目前为止还没有任何东西能让我做 应该就这么简单:
$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 的 product_cat 分类法。其次,即使您有 ID,似乎也没有获取 thumbnail/featured 图像的选项。那么现在呢?
所以我进入低级别并开始使用 $wpdb 直接查询 tables 并且我确定我之后的术语有 term_id 94。我查询 termmeta table缩略图的 post ID,我发现它是 905。现在我转向我的 post s table 并发现......没有 post 条目 905!什么鬼?所以我对另外两个类别执行此操作并找到相同的东西。查找图像的 ID 导致尝试提取 post 的附件时没有返回任何内容,因为没有 post 匹配图像的 ID...
为什么这么难? WordPress 使其他一切变得如此简单,但这个看似简单的任务似乎几乎不可能完成......所以现在你看到我已经用谷歌搜索了这个并且已经挣扎了我的背后,我提出这个问题是出于绝望:
如何获取 product_cat 个术语名称数组并将其转换为 url 个术语名称数组以显示类别的图像?
谢谢
最短的方法是使用woocommerce_subcategory_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_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>';
}