Как создать и настроить пользовательский виджет для отображения случайного отзыва на сайте в Wordpress?
Здравствуйте! Я работаю над созданием своего сайта на WordPress и мне необходимо добавить пользовательский виджет, который будет отображать случайный отзыв на сайте. Я уже создал несколько отзывов в виде постов, но не знаю, как настроить виджет для их отображения.
Можете ли вы подсказать, как создать и настроить такой пользовательский виджет? Я предполагаю, что мне нужно будет использовать функцию random для выбора случайного отзыва из базы данных и отобразить его в виджете. Но не уверен, как правильно сделать это.
Кроме того, у меня возникли затруднения с форматированием виджета. Я хотел бы, чтобы отзыв отображался внутри оформленного блока с заголовком и текстом, а также имел небольшие стилизованные элементы, такие как иконка рейтинга или изображение автора отзыва. Можете ли вы также подсказать, как внести стилизацию в этот виджет?
function custom_random_review_widget() {
// код для выбора случайного отзыва и его отображения в виджете
}
register_widget('custom_random_review_widget');
Буду очень благодарен за любую помощь и пример кода, который поможет мне решить эту проблему. Заранее спасибо!
Ответы:
Для создания пользовательского виджета с отображением случайного отзыва на вашем сайте WordPress, вам потребуется выполнить несколько шагов.
1. Создать виджет:
class Custom_Random_Review_Widget extends WP_Widget {
public function __construct() {
parent::__construct(
'custom_random_review_widget',
'Пользовательский виджет со случайным отзывом',
array('description' => 'Виджет, отображающий случайный отзыв на вашем сайте.')
);
}
public function widget($args, $instance) {
// Код для отображения случайного отзыва в виджете
}
public function form($instance) {
// Код для отображения настроек виджета в админке
}
public function update($new_instance, $old_instance) {
// Код для сохранения настроек виджета
}
}
function register_custom_random_review_widget() {
register_widget('Custom_Random_Review_Widget');
}
add_action('widgets_init', 'register_custom_random_review_widget');
2. Выбрать случайный отзыв:
function get_random_review() {
$args = array(
'post_type' => 'review', // Замените 'review' на название вашего типа поста с отзывами
'post_status' => 'publish',
'orderby' => 'rand',
'posts_per_page' => 1
);
$query = new WP_Query($args);
if ($query->have_posts()) {
$query->the_post();
// Код для отображения выбранного отзыва
}
wp_reset_postdata();
}
3. Отображение отзыва в виджете:
public function widget($args, $instance) {
echo $args['before_widget'];
echo $args['before_title'] . 'Отзыв' . $args['after_title'];
get_random_review();
echo $args['after_widget'];
}
Теперь оформим отображение отзыва внутри блока с заголовком и текстом, а также добавим стилизованные элементы.
.custom-review {
border: 1px solid #ccc;
padding: 10px;
margin-bottom: 20px;
}
.custom-review .review-title {
font-weight: bold;
margin-bottom: 10px;
}
.custom-review .review-rating {
color: gold;
}
Обновим функцию отображения отзыва в виджете:
public function widget($args, $instance) {
echo $args['before_widget'];
echo $args['before_title'] . 'Отзыв' . $args['after_title'];
echo '';
get_random_review();
echo '';
echo $args['after_widget'];
}
И функцию выбора случайного отзыва:
function get_random_review() {
$args = array(
'post_type' => 'review', // Замените 'review' на название вашего типа поста с отзывами
'post_status' => 'publish',
'orderby' => 'rand',
'posts_per_page' => 1
);
$query = new WP_Query($args);
if ($query->have_posts()) {
$query->the_post();
echo '' . get_the_title() . '';
echo '' . get_the_content() . '';
// Добавьте код для отображения иконки рейтинга или изображения автора отзыва
echo 'Надеюсь, это поможет вам решить вашу проблему. Если у вас остались вопросы или нужна дополнительная помощь, не стесняйтесь задавать их!
Удачи в создании вашего сайта на WordPress!