• Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Шорткод и get_term_link()

7erj

Новичок
Пытаюсь реализовать такую штуку:
Код:
add_shortcode('catlink', 'catlink_function');

function catlink_function($atts){
     extract(shortcode_atts(array(
     "num" => '',
     ), $atts));
return get_term_link( $num ,"product_cat");
}
Собственно, шорткод: [catlink num="1058"]

Выдает ошибку:
Код:
Catchable fatal error: Object of class WP_Error could not be converted to string in www/wp-includes/shortcodes.php on line 345
 

7erj

Новичок
Решение найдено
$num должен быть числом, иначе функция будет интерпретировать его как имя (slug).
Нужно вставить (int) в код.

Код:
Код:
function catlink_function($atts){
    extract(shortcode_atts(array(
        "num" => '',
    ), $atts));
    return get_term_link( (int) $num ,"product_cat");
}
add_shortcode('catlink', 'catlink_function');
Всем спасибо!
 

artemkomarov

Специалист
Местный
если вы передаете заранее неправильное значение то получите ошибку в виде объекта, а в вашей функции нет ни каких проверок на ошибки вы просто выводите предполагаемый результат в виде строки которой нет из за ошибки которая есть объект. Именно это и написал вам PHP.
 
  • Like
Реакции: 7erj

7erj

Новичок
если вы передаете заранее неправильное значение то получите ошибку в виде объекта, а в вашей функции нет ни каких проверок на ошибки вы просто выводите предполагаемый результат в виде строки которой нет из за ошибки которая есть объект. Именно это и написал вам PHP.
Спасибо, учту это в дальнейшем.
 
Сверху Снизу