Модули 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 ответов

Другие вопросы по тегам