我有一个自定义分类法,它有一个带有图像url的元数据字段。在post类型的单个模板上,我有下面的php,我需要它回显元字段,但是它仍然是空白的。我试过几种方法但我被困住了。
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仍然是空的。我也没有看到任何错误:
Expert:
Pete这就是我设置meta术语的代码:
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 = '';
}
?>发布于 2023-06-02 11:15:59
您的代码没有显示$term_id来自何处。如果没有在任何地方定义它,那么这可能会导致问题。
与直接在模板文件上使用get_term()和get_term_meta()不同,您可以定义几个辅助函数来处理数据检索。这使得模板文件更加简洁,如果您在其他地方需要相同的数据,代码就可以重用。
例如,你可以这样做。
// 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'])
);
}
}https://wordpress.stackexchange.com/questions/416445
复制相似问题