WordPress首页无法显示Custom Post Type及ACF字段问题排查
可能的原因及解决方法
1. 自定义文章类型的可查询参数未正确配置
注册affichage_produit时,如果public或publicly_queryable参数设为false,WP_Query将无法获取到该类型的文章。
- 检查注册CPT的代码,确保包含以下参数:
'public' => true, 'publicly_queryable' => true,
2. ACF Post Object字段返回值类型不匹配
ACF的Post Object字段默认返回WP_Post对象,而非文章ID,你的代码直接用返回值作为产品ID传入wc_get_product()会导致获取失败。
- 两种解决方式:
- 进入ACF字段设置,将「返回值」改为「Post ID」;
- 修改代码适配对象返回值:
$product_post = get_field('associated_product'); if ($product_post) { $product_id = $product_post->ID; $product = wc_get_product($product_id); }
3. 文章状态过滤问题
WP_Query默认只查询publish状态的文章,如果你的affichage_produit文章是草稿、待审核或私有状态,会被过滤掉。
- 需要在查询参数中添加允许的文章状态:
$args = array( 'post_type' => 'affichage_produit', 'posts_per_page' => 2, 'post_status' => array('publish', 'draft') // 根据实际状态调整 );
4. 首页模板未正确加载
确认当前主题的首页确实使用front-page.php,部分主题可能用home.php或自定义模板替代。
- 可以在
front-page.php顶部添加测试代码:echo 'Front Page Template Loaded';,刷新首页验证模板是否生效。
5. 关联产品状态异常
即使已设置关联产品,若产品已被删除、设为私有,或不属于WooCommerce产品类型(如普通文章),wc_get_product()会返回false,导致内容不显示。
- 临时添加调试代码排查:
var_dump($product_id); // 查看获取到的关联值 var_dump($product); // 查看产品对象是否有效
内容的提问来源于stack exchange,提问作者shibz
相关产品推荐
相关产品推荐

