空时使带有自定义字段的自定义帖子类型继承类别的自定义字段

时间:2019-05-22 18:50:41

标签: wordpress advanced-custom-fields

数周以来一直在努力寻找解决问题的方法。

案例:
我有一个名为:design的自定义帖子类型。该CPT有一个名为 thematique 的自定义字段(由ACF插件制作)。我为design的类别创建了相同的自定义字段( thematique )。

预期行为:
我希望每当我们将get_posts()WP_Query设为空白时,设计的 thematique 字段为空,它都应该继承其类别的 thematique

我已经研究了pre_get_posts钩子,但不确定如何处理。

有人有主意吗?

在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

@Ali_k

我不确定如何去做。我需要类似的东西:

// Designs Thematique priority mechanic
function design_thematique_priority($query){
    if($query->query['post_type'] == "design"){
        foreach($query->posts as $post){
            if($post->thematique == ""){
                $post->thematique = $post->category->thematique;
            }
        }
    }
}
add_filter( 'pre_get_posts', 'design_thematique_priority' );

但是我不认为可以使用任何循环来循环浏览pre_get_posts中的帖子,对吗?

答案 1 :(得分:0)

您可以通过简单的方法执行此操作,并在WP查询中可以找到每个返回项目的格式,并添加以下内容:

<?php $thematique = get_field('thematique'); //Gets current posts value of fiels
<?php if (empty($thematique)){ //Checks if the field is empty, if so do the following
    $postCat = get_the_category(); //Get current posts category ID
    $catID = 'category_' . $postCat; //Merge category ID and needed string for ACF
    $thematique = get_field('thematique', $catID); //Updated the value of $thematique with categories value
}?>

尽管未经测试,但这确实应该起作用,因为ACF表示要从类别中获取价值。找出more here