wordpress - 使用 Woocommerce 和 ACF 获取父分类自定义字段

标签 wordpress woocommerce advanced-custom-fields

我使用 Woocommerce 和高级自定义字段来管理产品。我要在子分类页面上显示父分类图像 .

实际上,我使用这个片段来获取分类父页面上的图像(它有效):

<?php 
$queried_object = get_queried_object(); 
$taxonomy = $queried_object->taxonomy;
$term_id = $queried_object->term_id;  
?>

<img src="<?php the_field('grosse_image_carre', $queried_object); ?>" />

供引用,这里是每个变量的 var_dump:

查询对象
object(stdClass)#5089 (10) { ["term_id"]=> int(341) ["name"]=> string(12) "France Laure" ["slug"]=> string(12) "france-laure" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(341) ["taxonomy"]=> string(11) "product_cat" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(185) ["filter"]=> string(3) "raw" } 

分类
string(11) "product_cat" 

term_id
int(341)

我的问题:当我在子类别页面上时如何获取父类别图像?

引用:Get values from a taxonomy term

编辑

我尝试了提出的解决方案,并使用了这个完整的代码:
<?php 
    $queried_object = get_queried_object(); 
    $taxonomy = $queried_object->taxonomy;
    $term_id = $queried_object->term_id; 

if($queried_object->parent) {
    $parent = $queried_object->parent;
    echo 'parent: '.$parent.'<br />';
    while($parent) {
        $cat = get_category($parent);
        echo 'Cat: '.$cat.'<br />';
        $parent = $cat->category_parent; // Line 30
        echo 'parent: '.$parent.'<br />';
        $term_id = $cat->cat_ID;  // Line 32
        echo 'term_id: '.$term_id.'<br />';
    }
}

?>

但我得到了
parent: 359
Cat: 

Notice: Trying to get property of non-object in ...woocommerce\subcat-archive-product.php on line 30
parent: 

Notice: Trying to get property of non-object in E...woocommerce\subcat-archive-product.php on line 32
term_id: 

编辑 2

我遵循了 Josh Edit 2,它终于奏效了!我用
<img src="<?php the_field('grosse_image_carre', 'product_cat_'.$term_id); ?>" />

最佳答案

如果您查看 queried_object 转储的结果,您应该会看到一个“父”键。

["parent"]=> int(0)

0 表示没有父分类,否则数字将是父分类的 ID。

所以你想做的是这样的事情。
<?php 
$queried_object = get_queried_object(); 
$taxonomy = $queried_object->taxonomy;
$term_id = $queried_object->term_id;

if($queried_object->parent) {
    $term_id = $queried_object->parent;
}
?>

<img src="<?php the_field('grosse_image_carre', $term_id); ?>" />

所以我们首先获取queried_object,并将$term_id 变量设置为它的ID。然后我们检查是否设置了父键(0 表示 false),如果有,则将 $term_id 设置为父 ID,而不是被查询对象的 ID。然后你只需将 the_field 上的 ID 参数更改为 $term_id 并且 bob 是你的叔叔 :)

编辑:

根据更新的信息,如果我们的父级超过 1 个,Lucien 想要顶级类别:
if($queried_object->parent) {
    $parent = $queried_object->parent;
    while($parent) {
        $cat = get_category($parent);
        $parent = $cat->category_parent;
        $term_id = $cat->cat_ID;
    }
}

现在 $term_id 被设置为顶级类别 ID。

编辑 2:

虽然上面的代码适用于常规的 WordPress 类别,但我忘记了我们想要使用自定义分类法(在这种情况下 WooCommerce product_cat 分类法。)

所以考虑到这一点,这是代码。我已经在 WooCommerce 安装上对此进行了测试,具有 4 个深度类别,它返回了最高类别。
$queried_object = get_queried_object(); 
$taxonomy = $queried_object->taxonomy;
$term_id = $queried_object->term_id; 

if($queried_object->parent) {
    $parent = $queried_object->parent;
    while($parent) {
        $cat = get_term($parent, $taxonomy);
        $parent = $cat->parent;
        $term_id = $cat->term_id;
    }
}

和以前一样,您将在 ACF 函数中使用 $term_id 来检索图像。
<img src="<?php the_field('grosse_image_carre', $queried_object); ?>" />
由于我们没有对分类法的名称进行硬编码,因此此代码也应该与任何新的自定义分类法一起开箱即用。检索的所有内容都是自动的。

关于wordpress - 使用 Woocommerce 和 ACF 获取父分类自定义字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31519515/

相关文章:

css - IE6 中的下拉菜单插入宽度过大,无法下拉

wordpress - 如何在 GCE 上启用和接受 HTTPS 连接以及设置 SSL 证书

php - WordPress 的自定义搜索没有结果

javascript - 谷歌地图 v3 API 和 WordPress ACF : Multiple Custom Markers

advanced-custom-fields - 通过 WP API 更新布局内的 ACF 字段

javascript - 如何在 javascript 中循环遍历具有特定键和值的 json 对象?

wordpress - 我已经在 wordpress 网站上安装了 SSL 证书,但是安装 ssl 图像后没有显示( Logo 图像等)

css - 如何向 WooCommerce 单个产品页面添加类

mysql - 为什么我不断收到 posts.ID 未知列,而该列存在?

php - 了解 woocommerce 主题 - 使用我自己的主题