如何检查哪个类别 parent 有术语元
How to check which category parent has term meta
我正在尝试在 Wordpress 中实现以下目标:
我的类别有一个额外的所见即所得字段设置为术语元。我将它显示在我的 category.php 模板文件中。
但如果它是空的,类别应该直接检查它 parent,如果它发现那里的字段不为空,那么它应该继承它。如果direct parent 为空,则转到上层,检查并显示。我需要深入 5 个级别,而不是更多。如果整个继承树的所有字段都是空的,那当然什么都不显示了。
到目前为止,这是我的代码,所以你明白了。
$category = get_the_category();
$ancestors = get_ancestors( $category[0]->term_id, 'category' );
$direct_parent_id = $ancestors[0];
$topmost_parent_id = $ancestors[1];
$level = asb_get_cat_level( $cat );
if(function_exists('get_tax_meta')) {
/* First get Section partner fields */
$cat_part = get_term_meta(get_queried_object_id(),'cat_part_wysiwyg', true);
$cat_part_parent = get_term_meta($direct_parent_id,'cat_part_wysiwyg', true);
$cat_part_grandparent = get_term_meta($topmost_parent_id,'cat_part_wysiwyg', true);
/* Construct output for Section partners */
$cat_partner = '<div class="category-partners">' . $cat_part . '</div>';
$cat_partner_parent = '<div class="category-partners"> ' . $cat_part_parent . '</div>';
$cat_partner_grandparent = '<div class="category-partners">' . $cat_part_grandparent . '</div>';
/* Start showing Section partners */
if( !empty($cat_part_grandparent) ) {
print_r($cat_partner_grandparent);
} elseif( !empty($cat_part_parent) ) {
print_r($cat_partner_parent);
} elseif ( !empty($cat_part) ) {
print_r($cat_partner);
} else {
/* Die */
}
}
加上我的 functions.php 有这个代码:
function asb_get_cat_level($id, $type = 'category') {
return count( get_ancestors($id, $type) );
}
(我在 $level == 1 等条件语句中使用了这个函数)
到目前为止,只有最顶层的类别显示了它的部门合作伙伴,但children不继承它们。
我最终使用了这段代码
// Section Partners
function section_partners() {
$cat_id = get_query_var('cat');
$ancestors = get_ancestors( $cat_id, 'category' );
$parent_one = $ancestors[0];
$parent_null = $ancestors[1];
$parent_two = $ancestors[2];
// $level = asb_get_cat_level( $cat );
if(function_exists('get_tax_meta')) {
/* First get Section partner fields */
$cat_part = get_term_meta(get_queried_object_id(),'cat_part_wysiwyg', true);
$cat_part_parent = get_term_meta($parent_one, 'cat_part_wysiwyg', true);
$cat_part_grandparent = get_term_meta($parent_null,'cat_part_wysiwyg', true);
$cat_part_grandgrandparent = get_term_meta($parent_two,'cat_part_wysiwyg', true);
/* Construct output for Section partners */
$cat_partner = '<div class="category-partners"><div>' . $cat_part . '</div></div>';
$cat_partner_parent = '<div class="category-partners"><div>' . $cat_part_parent . '</div></div>';
$cat_partner_grandparent = '<div class="category-partners"><div>' . $cat_part_grandparent . '</div></div>';
$cat_partner_grandgrandparent = '<div class="category-partners"><div>' . $cat_part_grandgrandparent . '</div></div>';
if ( !empty($cat_part) ) { /* if top category has partners */
print_r($cat_partner);
} elseif ( !empty($cat_part_parent) ) { /* if 1 level category has partners */
print_r($cat_partner_parent);
} elseif ( !empty($cat_part_grandparent) ) { /* if 2 level category has partners */
print_r($cat_partner_grandparent);
} elseif ( !empty($cat_part_grandgrandparent) ) { /* if 3 level category has partners */
print_r($cat_partner_grandgrandparent);
} elseif ( empty($cat_part_parent) && !empty($cat_part) ) { /* inherit from top level */
print_r($cat_partner);
} elseif ( empty($cat_part_parent) && empty($cat_part_grandparent) && !empty($cat_part) ) { /* inherit from 1 level */
print_r($cat_partner);
} elseif ( empty($cat_part_grandparent) && empty($cat_part_grandgrandparent) && !empty($cat_part_parent) ) { /* inherit from 2 level */
print_r($cat_partner_parent);
} elseif ( empty($cat_part_parent) && empty($cat_part_grandparent) && empty($cat_part_grandgrandparent) && !empty($cat_part) ) { /* inherit from 2 level */
print_r($cat_partner);
} else {
/* Die */
}
}
}
但仍然需要修复 PHP 错误 $parent_one、$parent_null 和 $parent_two return 为空。
我正在尝试在 Wordpress 中实现以下目标:
我的类别有一个额外的所见即所得字段设置为术语元。我将它显示在我的 category.php 模板文件中。 但如果它是空的,类别应该直接检查它 parent,如果它发现那里的字段不为空,那么它应该继承它。如果direct parent 为空,则转到上层,检查并显示。我需要深入 5 个级别,而不是更多。如果整个继承树的所有字段都是空的,那当然什么都不显示了。
到目前为止,这是我的代码,所以你明白了。
$category = get_the_category();
$ancestors = get_ancestors( $category[0]->term_id, 'category' );
$direct_parent_id = $ancestors[0];
$topmost_parent_id = $ancestors[1];
$level = asb_get_cat_level( $cat );
if(function_exists('get_tax_meta')) {
/* First get Section partner fields */
$cat_part = get_term_meta(get_queried_object_id(),'cat_part_wysiwyg', true);
$cat_part_parent = get_term_meta($direct_parent_id,'cat_part_wysiwyg', true);
$cat_part_grandparent = get_term_meta($topmost_parent_id,'cat_part_wysiwyg', true);
/* Construct output for Section partners */
$cat_partner = '<div class="category-partners">' . $cat_part . '</div>';
$cat_partner_parent = '<div class="category-partners"> ' . $cat_part_parent . '</div>';
$cat_partner_grandparent = '<div class="category-partners">' . $cat_part_grandparent . '</div>';
/* Start showing Section partners */
if( !empty($cat_part_grandparent) ) {
print_r($cat_partner_grandparent);
} elseif( !empty($cat_part_parent) ) {
print_r($cat_partner_parent);
} elseif ( !empty($cat_part) ) {
print_r($cat_partner);
} else {
/* Die */
}
}
加上我的 functions.php 有这个代码:
function asb_get_cat_level($id, $type = 'category') {
return count( get_ancestors($id, $type) );
}
(我在 $level == 1 等条件语句中使用了这个函数)
到目前为止,只有最顶层的类别显示了它的部门合作伙伴,但children不继承它们。
我最终使用了这段代码
// Section Partners
function section_partners() {
$cat_id = get_query_var('cat');
$ancestors = get_ancestors( $cat_id, 'category' );
$parent_one = $ancestors[0];
$parent_null = $ancestors[1];
$parent_two = $ancestors[2];
// $level = asb_get_cat_level( $cat );
if(function_exists('get_tax_meta')) {
/* First get Section partner fields */
$cat_part = get_term_meta(get_queried_object_id(),'cat_part_wysiwyg', true);
$cat_part_parent = get_term_meta($parent_one, 'cat_part_wysiwyg', true);
$cat_part_grandparent = get_term_meta($parent_null,'cat_part_wysiwyg', true);
$cat_part_grandgrandparent = get_term_meta($parent_two,'cat_part_wysiwyg', true);
/* Construct output for Section partners */
$cat_partner = '<div class="category-partners"><div>' . $cat_part . '</div></div>';
$cat_partner_parent = '<div class="category-partners"><div>' . $cat_part_parent . '</div></div>';
$cat_partner_grandparent = '<div class="category-partners"><div>' . $cat_part_grandparent . '</div></div>';
$cat_partner_grandgrandparent = '<div class="category-partners"><div>' . $cat_part_grandgrandparent . '</div></div>';
if ( !empty($cat_part) ) { /* if top category has partners */
print_r($cat_partner);
} elseif ( !empty($cat_part_parent) ) { /* if 1 level category has partners */
print_r($cat_partner_parent);
} elseif ( !empty($cat_part_grandparent) ) { /* if 2 level category has partners */
print_r($cat_partner_grandparent);
} elseif ( !empty($cat_part_grandgrandparent) ) { /* if 3 level category has partners */
print_r($cat_partner_grandgrandparent);
} elseif ( empty($cat_part_parent) && !empty($cat_part) ) { /* inherit from top level */
print_r($cat_partner);
} elseif ( empty($cat_part_parent) && empty($cat_part_grandparent) && !empty($cat_part) ) { /* inherit from 1 level */
print_r($cat_partner);
} elseif ( empty($cat_part_grandparent) && empty($cat_part_grandgrandparent) && !empty($cat_part_parent) ) { /* inherit from 2 level */
print_r($cat_partner_parent);
} elseif ( empty($cat_part_parent) && empty($cat_part_grandparent) && empty($cat_part_grandgrandparent) && !empty($cat_part) ) { /* inherit from 2 level */
print_r($cat_partner);
} else {
/* Die */
}
}
}
但仍然需要修复 PHP 错误 $parent_one、$parent_null 和 $parent_two return 为空。