Сделать пользовательский тип записи с помощью настраиваемого поля наследовать пользовательское поле категории, когда оно пустое - PullRequest
0 голосов
/ 22 мая 2019

пытался найти решение моей проблемы в течение нескольких недель.

Корпус:
У меня есть пользовательский тип сообщения с именем: design. Этот CPT имеет настраиваемое поле (сделанное с плагином ACF), которое называется thematique . Я создал одно и то же настраиваемое поле ( thematique ) для категорий design.

Ожидаемое поведение:
Я хочу, чтобы всякий раз, когда мы делаем get_posts() или WP_Query, если поле thematique дизайна пустое, оно должно наследовать thematique .

своей категории.

Я исследовал pre_get_posts крючок, но я не совсем уверен, как с ним справиться.

У кого-нибудь есть идея?

Заранее спасибо, я очень ценю вашу помощь!

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

Вы можете просто сделать это простым способом, и внутри вашего WP Query, где у вас есть форматирование для каждого возвращаемого элемента, добавить это:

<?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 говорит, что нужно получать значение из категорий. Узнайте больше здесь .

0 голосов
/ 23 мая 2019

@ 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 верно?

...