eliza30volkova 26.04.2023 13:34

Как создать и настроить пользовательский виджет с отображением актуальных акций и скидок на сайте в Wordpress?

Здравствуйте!

У меня есть вопрос по созданию и настройке пользовательского виджета с отображением актуальных акций и скидок на моем сайте, который разработан на WordPress. Я бы хотел добавить этот виджет на боковую панель моего сайта и настроить его таким образом, чтобы он автоматически обновлялся и отображал актуальные акции и скидки.

Я уже создал пользовательский виджет с помощью функции register_widget в файле functions.php:


class Promotions_Widget extends WP_Widget {
  function __construct() {
    parent::__construct(
      'promotions_widget',
      'Акции и скидки',
      array( 'description' => 'Отображает актуальные акции и скидки' )
    );
  }

  public function widget( $args, $instance ) {
    // Код отображения акций и скидок
  }
}
 
function register_promotions_widget() {
  register_widget( 'Promotions_Widget' );
}
 
add_action( 'widgets_init', 'register_promotions_widget' );

Теперь мне нужна помощь в написании кода, который будет выводить актуальные акции и скидки внутри метода widget. Я хотел бы получить список акций и скидок из определенной категории (например, "Акции") и отображать их в виде списка с заголовком и описанием.

Буду очень благодарна, если кто-то сможет помочь мне с этим вопросом!

Ответы:

antobur25 26.04.2023 13:47
Для того чтобы получить список акций и скидок из определенной категории и отобразить их в виде списка с заголовком и описанием внутри метода widget, вам понадобится использовать функции и запросы WordPress. Первым шагом нужно получить список акций и скидок из выбранной категории. Для этого можно воспользоваться функцией get_posts(), которая позволяет получить посты по определенным параметрам, в том числе по категории.

$category = 'акции'; // Название категории
$category_id = get_cat_ID( $category ); // Получаем ID категории

$args = array(
  'category' => $category_id,
  'posts_per_page' => 5, // Количество отображаемых акций и скидок
);

$promotions = get_posts( $args ); // Получаем список акций и скидок
Далее нужно вывести список акций и скидок внутри метода widget. Для этого можно использовать цикл foreach и функции WordPress для получения нужной информации о каждой акции.

if ( $promotions ) {
  echo '
    '; foreach ( $promotions as $promotion ) { echo '
  • '; echo '

    ' . esc_html( $promotion->post_title ) . '

    '; // Заголовок акции echo '

    ' . esc_html( $promotion->post_content ) . '

    '; // Описание акции echo '
  • '; } echo '
'; }
Теперь ваш пользовательский виджет должен отображать список актуальных акций и скидок из выбранной категории. Добавьте этот код внутрь метода widget вашего класса Promotions_Widget. Обратите внимание, что в примере кода используется функция esc_html() для безопасного вывода текста на страницу, чтобы избежать возможности вставки вредоносных скриптов. Надеюсь, это поможет вам решить вашу задачу! Если у вас возникнут еще вопросы, не стесняйтесь задавать. Удачи в работе с WordPress!
platon88 26.04.2023 13:58

Для того, чтобы выводить актуальные акции и скидки внутри метода widget вашего пользовательского виджета, вам нужно будет использовать функции запросов к базе данных WordPress и циклы для обработки полученной информации.

Вот как может выглядеть код, который будет доставать список акций и скидок из определенной категории и отображать их в виде списка:


public function widget( $args, $instance ) {
  // Получение списка акций и скидок из определенной категории
  $args = array(
    'post_type' => 'post', // тип записи (в данном случае - пост)
    'category_name' => 'Акции', // название категории (замените на свою)
    'posts_per_page' => 5 // количество постов для вывода (замените на своё)
  );
  $query = new WP_Query( $args );
  
  // Проверка на наличие постов
  if ( $query->have_posts() ) {
    echo '
    '; // Цикл постов while ( $query->have_posts() ) { $query->the_post(); echo '
  • '; echo '

    ' . get_the_title() . '

    '; // вывод заголовка поста echo '

    ' . get_the_content() . '

    '; // вывод содержимого поста echo '
  • '; } echo '
'; // Восстанавливаем оригинальные данные постов wp_reset_postdata(); } else { echo '

Нет акций и скидок в данной категории.

'; } }

В этом коде, мы сначала создаем массив $args, в котором указываем тип записи (post), название категории (замените на свою) и количество постов для вывода (замените на нужное вам количество). Затем мы выполняем запрос с помощью функции WP_Query, передавая ей массив $args.

Далее, мы проверяем, есть ли посты в запросе, и если есть, то выводим их в виде списка с помощью цикла while. Внутри цикла мы используем функции get_the_title() и get_the_content() для получения заголовка и содержимого каждого поста, и выводим их с помощью тегов

и

.

В конце цикла, мы восстанавливаем оригинальные данные постов с помощью функции wp_reset_postdata().

Если в определенной категории нет акций и скидок, то выводится сообщение "Нет акций и скидок в данной категории."

Надеюсь, этот код поможет вам достать и отобразить актуальные акции и скидки в вашем пользовательском виджете!

Удачи!


Добавить ответ