Модули 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' );