Задать вопрос
@olenne

Почему шоткод выводится на странице два раза?

function rating_function($atts) {
    extract(shortcode_atts(array(
    'rating' => 5, 
    'type' => 'rating', 
    'number' => 0 
  ), $atts));
return wp_star_rating(array('rating' => $rating, 'type' => $type, 'number' => $number));
}
add_shortcode('rating', 'rating_function');

На странице, например, добавлен [rating rating="3"].
В результате выводит две строчки с рейтингом, в чем может быть проблема?
  • Вопрос задан
  • 29 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
sergeiermilov
@sergeiermilov
Веб-дизайн, фронтенд и WordPress разработка
Не используйте функцию extract() (работает по аналогии с array_merge). Считается плохим стилем и ее использование устарело даже для ядра Wordpress. Это небезопасно, часто создает много конфликтов, а также перезаписывает некоторые данные. Вполне вероятно, что проблема в этом. Лучше так:

$args = shortcode_atts( 
    array(
    'rating' => 5, 
    'type' => 'rating', 
    'number' => 0,
    ), 
    $atts
);


В wp_star_rating есть последний элемент в массиве 'echo', он по умолчанию true. Я не тестировал эти функции, но можно попробовать его сделать false.

И еще - по идее wp_star_rating() это встроенная функция. Может быть вместо того, чтобы переопределять функцию wp_star_rating(), просто использовать встроенную функцию?

Для того, чтобы использовать эту функцию ваш шаблон должен включать файл wp-admin/includes/template.php. В документации есть примеры.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы