首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在单个模板上显示分类法术语元字段

在单个模板上显示分类法术语元字段
EN

WordPress Development用户
提问于 2023-06-01 15:01:46
回答 1查看 15关注 0票数 0

我有一个自定义分类法,它有一个带有图像url的元数据字段。在post类型的单个模板上,我有下面的php,我需要它回显元字段,但是它仍然是空白的。我试过几种方法但我被困住了。

代码语言:javascript
复制
ID, 'expert');
$exterm = get_term( $term_id, 'expert' );
$eximg = get_term_meta($exterm->term_id, 'tax_img', true);

if (!empty($expert)) {
    echo 'Expert:';
    echo $expert;
    echo '';
    echo '';
} ?>

这是结果,但是img仍然是空的。我也没有看到任何错误:

代码语言:javascript
复制
 Expert:
 Pete

这就是我设置meta术语的代码:

代码语言:javascript
复制
if ( ! class_exists( 'Expert_Tax_Img' ) ) {
    class Expert_Tax_Img {
        public function __construct() {
            if ( is_admin() ) {
                add_action( 'expert_add_form_fields',  array( $this, 'create_screen_fields'), 10, 1 );
                add_action( 'expert_edit_form_fields', array( $this, 'edit_screen_fields' ),  10, 2 );
                add_action( 'created_expert', array( $this, 'save_data' ), 10, 1 );
                add_action( 'edited_expert',  array( $this, 'save_data' ), 10, 1 );
                add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
            }
        }

        public function create_screen_fields( $taxonomy ) {
            $tax_img = '';
            ?>
            
                
                
                
                
                    
                        
                    
                
            
            term_id, 'tax_img', true );
            if( empty( $tax_img ) ) {
                $tax_img = '';
            }
            ?>
EN

回答 1

WordPress Development用户

回答已采纳

发布于 2023-06-02 11:15:59

您的代码没有显示$term_id来自何处。如果没有在任何地方定义它,那么这可能会导致问题。

与直接在模板文件上使用get_term()get_term_meta()不同,您可以定义几个辅助函数来处理数据检索。这使得模板文件更加简洁,如果您在其他地方需要相同的数据,代码就可以重用。

例如,你可以这样做。

代码语言:javascript
复制
// functions.php helpers
function my_post_experts(int $post_id): array {
    $terms = get_the_terms( $post_id, 'expert' );

    return is_array($terms) ? array_map('my_wp_term_to_expert', $terms) : [];
}

function my_wp_term_to_expert(WP_Term $term): array {
    $imge = get_term_meta($term->term_id, 'tax_img', true);
    
    return [
        'name' => $term->name,
        'img_url' => $imge ?: '',
    ];
}

// single template
$experts = my_post_experts(get_the_ID());
if ($experts) {
    foreach ($experts as $expert) {
        printf(
            '
                Expert: %s
                
                    
                
            ',
            esc_html($expert['name']),
            esc_url($expert['img_url'])
        );
    }
}
票数 1
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/416445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档