Форум OlegON > Компьютеры и Программное обеспечение > Сеть > Создание сайтов и поисковая оптимизация (SEO)

Wordpress. Как вывести произвольные темы в виджете без плагинов

14.07.2020 15:34


15.06.2020 20:31
OlegON
 
При оценке поисковиками сайта есть такие понятия, как добавочная стоимость и время, которое провел посетитель на сайте.

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

Однако, Wordpress в целом косячный в плане SEO, что заставляет многих пользователей ставить множество не только ненужных, но и даже вредных SEO-оптимизаторских плагинов. Нет в нем и такого средства для перелинковки, как вывода в виджетах еще нескольких тем, чтобы, возможно, заинтересовать посетителя. Я сначала пользовался каким-то соответствующим плагином, который и популярные темы вытаскивал, да еще и статистику собирал. Автор вошел в такой раж, что начал косячить с версткой, а в самом плагине была масса ненужного лично мне, да и объем кода не позволял мне оценивать его безопасность. Я сторонник написания самостоятельного кода, насколько это возможно, и плагины до последнего стараюсь не ставить.

В итоге я выкинул то, что там наколбасили в плагине популярных постов и решил написать просто вывод нескольких произвольных постов в виджете. Ногами не бейте, в Wordpress я особо не разбираюсь, потому поправки и замечания приму с благодарностью.

Итак, в functions.php вашей темы вписываем код
Код:
function ok_rnd() {

$args = array(
    'post_type' => 'post',
    'orderby'   => 'rand',
    'posts_per_page' => 5,
    );

$the_query = new WP_Query( $args );

if ( $the_query->have_posts() ) {

$string .= '<div class="post-content">';
    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        $string .= '<a href="'. get_permalink() .'"><div style="clear:both;color:#000000"><br>'.get_the_title().'</div>'.get_the_post_thumbnail(get_the_ID()).'</a>';
    }
    $string.='</div>';
    wp_reset_postdata();
} else {

$string .= 'no posts found';
}

return $string;
}

add_shortcode('ok-rnd','ok_rnd');
add_filter('widget_text', 'do_shortcode');
после чего в виджеты необходимо добавить текстовое поле с каким-нибудь заголовком, я, например, использую "Популярное" (почему бы им не быть популярным), после чего вместо текста вставить
Код:
[ok-rnd]
ну и выбрать расположение виджета среди других... Все. Код будет заменен на список постов с превьюшками, 5 штук. В валидаторе проверил, все нормально.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.