Модули WordPress: расчет баллов из полей таксономических отношений

У меня есть модуль CPT (названный «автомобили») с несколькими настраиваемыми полями (названными «company_location», «color_options», «engine_options»), связанными с настраиваемыми таксономиями (названными «country», «color», «engine»). И каждая из этих пользовательских таксономий имеет настраиваемое поле ‘points’, поэтому я могу назначить числовое значение в баллах для каждого термина.

Я хочу добавить эти баллы для текущей записи ‘car’ и отобразить ее с помощью шорткода.

Например:

  • страна имеет следующие термины и пункты: Австралия (1), Канада (0), Ирландия (0).
  • цвет имеет следующие термины и точки: зеленый (1), синий (1), красный (1).
  • двигатель имеет следующие термины и точки: маленький (-1), средний (0), большой (0).

Таким образом, если бы текущая автомобильная почта включала все эти термины таксономии в полях отношений, общее количество очков было бы равно 3 (1 + 0 + 0 + 1 + 1 + 1-1 + 0 + 0).

Ниже приведен фрагмент кода, который я использую в своем файле functions.php … большая часть его взята из этого справочного документа: https://pods.io/tutorials/get-values-from-a-custom-relationship-field/

Но по некоторым причинам он продолжает рассчитываться как «0».

Есть идеи, что не так? Я прошел через это миллион раз, но я застрял.

// Add car score shortcode
function shortcode_car_score() {

//get Pods object for current post
$pod = pods( 'car', get_the_id() );

//Loop through these custom fields on the post
$car_fields = array('company_location', 'color_options', 'engine_options');

foreach ($car_fields as $car_field) {

//get the value for the relationship field
$related = $pod->field($car_field);

//loop through related field
if ( ! empty( $related ) ) {
foreach ( $related as $rel ) {
//get id for related post and put in ID
$id = $rel[ 'ID' ];
//get the value for the points custom field in the related post
$points = get_post_meta( $id, 'points', true );
//add points to the total
$car_points = $points + $car_points;
} //end of foreach
} //endif
}//end of foreach

return $car_points;
}

add_shortcode( 'car_score', 'shortcode_car_score' );

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]