You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress中如何用PHP短码从CPT获取测验图片并展示?

问题修复:短码无法加载测验描述图片

核心问题排查

你的短码能显示标题和跳转链接,但无法加载测验描述图片,大概率是自定义元键匹配错误——你代码里用的fca_qc_quiz_description_img可能不是插件存储图片ID的真实键名。另外代码中$quiz_description绑定的fca_qc_image元键,也可能不是存储测验描述的正确键。

解决方案步骤

1. 先确认正确的元键

在循环中加入代码,打印当前测验的所有自定义元数据,找到图片和描述对应的真实键名:

// 在$quiz_id = get_the_ID();这行后面添加
echo '<pre>';
print_r(get_post_custom($quiz_id));
echo '</pre>';

访问页面后查看输出的元数据列表,找到存储图片ID和测验描述的键,替换代码里的错误键即可。

2. 常见修复场景

场景1:插件用特色图片存储测验封面

如果测验的图片是设置为文章特色图片,替换图片获取部分的代码:

// 替换原来的图片获取代码
$quiz_image_id = get_post_thumbnail_id($quiz_id);
$quiz_image = wp_get_attachment_image_src($quiz_image_id, 'thumbnail');

场景2:确认了正确的自定义元键

如果通过打印元数据找到了正确的键(比如实际是fca_qc_desc_img),则修改对应行:

$quiz_image_id = get_post_meta( $quiz_id, '你找到的图片元键', true );
// 同时修正测验描述的元键
$quiz_description = get_post_meta( $quiz_id, '你找到的描述元键', true );

3. 完整修正后的示例代码(以特色图片为例)

function fca_qc_quiz_shortcode($atts){
    $atts = shortcode_atts( array(
        'category' => ''
    ), $atts );
    
    $quiz_category = $atts['category'];
    
    $args = array(
        'post_type' => 'fca_qc_quiz',
        'post_status' => 'publish',
        'posts_per_page' => -1,
        'tax_query' => array(
            array(
                'taxonomy' => 'quiz_categories',
                'field' => 'slug',
                'terms' => $quiz_category
            )
        )
    );
    
    $quizes = new WP_Query($args);
    $html = '';
    
    if($quizes->have_posts()){
        while($quizes->have_posts()){
            $quizes->the_post();
            
            $quiz_title = get_the_title();
            $quiz_id = get_the_ID();
            
            // 获取特色图片
            $quiz_image_id = get_post_thumbnail_id($quiz_id);
            $quiz_image = wp_get_attachment_image_src($quiz_image_id, 'thumbnail');
            // 获取测验描述(替换为你找到的正确元键)
            $quiz_description = get_post_meta( $quiz_id, 'fca_qc_quiz_description', true );
            
            $html .= '<div class="quiz">';
            $html .= '<h2>'.$quiz_title.'</h2>';
            
            if(!empty($quiz_image)){
                $html .= '<img src="'.$quiz_image[0].'" alt="'.$quiz_title.'">';
            }
            
            if(!empty($quiz_description)){
                $html .= '<p class="quiz-desc">'.$quiz_description.'</p>';
            }
            $html .= '<a href="'.get_permalink().'">'.__('Start Quiz', 'fca_qc').'</a>';
            $html .= '</div>';
        }
        wp_reset_postdata();
    }else{
        $html .= '<p>'.__('No quiz found in this category', 'fca_qc').'</p>';
    }
    
    return $html;
}
add_shortcode( 'quizzes_by_category', 'fca_qc_quiz_shortcode' );

额外提示

  • 测试时可先注释掉tax_query部分,加载所有测验确认图片正常显示后,再添加分类筛选逻辑。
  • 如果插件有官方文档,优先查看文档中关于自定义字段的说明,避免手动猜元键。

内容的提问来源于stack exchange,提问作者M. Hussain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 16:23:14