WordPRess имеет множество плагинов для реализации связанных функций статей. Преимущество плагинов заключается в том, что их легко настроить, но они могут оказывать небольшое влияние на скорость веб-сайта, поэтому многие люди по-прежнему предпочитают использовать код для достижения этой цели. необходимые функции, но опять же реализация кода имеет и недостатки, то есть конфигурация сложна, и люди, не понимающие код, полностью запутываются или могут только копировать чужой код. Лучше использовать плагины.
Здесь я собрал несколько способов использования кода для реализации соответствующих статей. Будут четко обозначены функции каждой части кода, а также способы настройки нужных функций. Надеюсь, это будет полезно для всех. Если у вас возникнут вопросы, вы можете задать их в этой статье в комментариях, и я оперативно вам отвечу. Прежде чем мы начнем, позвольте мне объяснить, что вывод формата HTML-кода всеми следующими методами имеет следующую форму, и вы можете изменить ее по мере необходимости:
<ul id="xxx">
<li>* <a title="Название статьи 1" rel="bookmark" href="Ссылка на статью 1">Название статьи 1</a></li>
<li>* <a title="Название статьи 2" rel="bookmark" href="Ссылка на статью 2">Название статьи 2</a></li>
...
</ul>
Метод 1: Связанный с тегами
Сначала получить все теги статьи, а затем получить n статей под этими тегами, тогда эти n статей являются статьями, связанными со статьей. Все плагины статей, связанные с WordPress, которые теперь можно увидеть, используют этот метод. Вот реализованный код:
<ul id="tags_based">
<?php
$post_tags = wp_get_post_tags($post->ID);
если ($post_tags) {
foreach ($post_tags как $tag)
{
// Получаем список тегов
$tag_list[] .= $tag->term_id;
}
// Случайным образом получаем тег из списка тегов
$post_tag = $tag_list[mt_rand(0, count($tag_list) - 1)];
// Этот метод использует функцию query_posts() для вызова связанных статей. Ниже приведен список параметров.
$args = массив(
'tag__in' => массив($post_tag),
'category__not_in' => array(NULL), // Идентификатор категории не включен
'post__not_in' => массив ($post->ID),
'showposts' => 6, // Отображение количества связанных статей
'caller_get_posts' => 1
);
query_posts($args);
если (have_posts()):
в то время как (have_posts()): the_post(); update_post_caches($posts);
<li>* <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a; ></li>
<?php в конце еще: ?>
<li>*Похожих статей пока нет.</li>
<?php endif; wp_reset_query() } ?>;
</ul>
Инструкции по использованию: «Идентификатор исключенной категории» означает, что связанные статьи не отображают статьи в этой категории. Просто замените NULL в той же строке на идентификатор категории статьи. Для разделения нескольких идентификаторов используйте запятые половинной ширины. Поскольку здесь отображаются только 6 связанных статей, независимо от того, сколько значений присвоено параметру tag__in функции query_posts(), будет отображаться только 6 статей под одним тегом, если только первый тег не имеет 1 статью и второй тег. имеет 2 статьи, а третий — 3 статьи. . . . . . Итак, если в этой статье есть несколько тегов, то мы случайным образом получаем идентификатор тега, присваиваем его параметру tag__in и получаем 6 статей под тегом.
Метод 2: Связанный с классификацией
Этот метод достигает цели получения связанных статей путем получения идентификатора категории статьи, а затем получения статей в этой категории.
<ul id="cat_based">
<?php
$cats = wp_get_post_categories($post->ID);
если ($ кошки) {
$cat = get_category($cats[0]);
$first_cat = $cat->cat_ID;
$args = массив(
'category__in' => массив($first_cat),
'post__not_in' => массив ($post->ID),
'показы' => 6,
'caller_get_posts' => 1);
query_posts($args);
если (have_posts()):
в то время как (have_posts()): the_post(); update_post_caches($posts);
<li>* <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title_attribute();
?>"><?php the_title(); ?></a></li>
<?php в конце еще: ?>
<li>*Похожих статей пока нет.</li>
<?php endif; wp_reset_query() } ?>;
</ul>
Метод 3: связанный с тегами, сбор SQL
Принцип получения связанных статей аналогичен методу 1, но при получении статей используются операторы SQL для непосредственного чтения базы данных, тем самым случайным образом получая 6 записей связанных статей, вместо функции WordPress query_posts().
<ul id="tags_based">
<?php
$post_tags = wp_get_post_tags($post->ID);
если ($post_tags) {
foreach ($post_tags как $tag)
{
// Получаем список тегов
$tag_list[] .= $tag->term_id;
}
// Случайным образом получаем тег из списка тегов
$post_tag = $tag_list[mt_rand(0, count($tag_list) - 1)];
$based = $wpdb->get_results("
ВЫБЕРИТЕ {$wpdb->prefix}posts.post_title, {$wpdb->prefix}posts.guid
ИЗ {$wpdb->prefix}сообщений, {$wpdb->prefix}term_relationships, {$wpdb->prefix}term_taxonomy
ГДЕ {$wpdb->prefix}posts.ID = {$wpdb->prefix}term_relationships.object_id
И {$wpdb->prefix}term_taxonomy.taxonomy = 'post_tag'
И {$wpdb->префикс}term_taxonomy.term_taxonomy_id = {$wpdb->префикс}
term_relationships.term_taxonomy_id
И {$wpdb->prefix}posts.post_status = 'публиковать'
И {$wpdb->prefix}posts.post_type = 'post'
И {$wpdb->prefix}term_taxonomy.term_id = '" . $post_tag . "'
И {$wpdb->prefix}posts.ID != '" . $post->ID . "'
ПОРЯДОК ПО РЭНДАМ( )
ПРЕДЕЛ 6");
// Цифра 6 в приведенном выше коде означает ограничение приобретения только 6 связанных статей.
// Изменяя число 6, вы можете изменить количество нужных статей
если ( $ связано ) {
Еогеасп ($связанный как $связанный_пост) {
?>
<li>* <a href="<?php echo $lated_post->guid; ?>" rel="bookmark"
title="<?php echo $ linked_post->post_title; ?>"><?php echo $ linked_post->post_title ?></a></li>
<?php } } еще { ?>
<li>*Похожих статей пока нет.</li>
<?php } }?>
</ul>
Метод 4: Связанный с классификацией, получение SQL
Принцип получения связанных статей аналогичен методу 2, но при получении статей используются операторы SQL для непосредственного чтения базы данных, тем самым случайным образом получая 6 записей связанных статей, вместо функции WordPress query_posts().
<ul id="cat_based">
<?php
$cats = wp_get_post_categories($post->ID);
если ($ кошки) {
$cat = get_category($cats[0]);
$first_cat = $cat->cat_ID;
$based = $wpdb->get_results("
ВЫБЕРИТЕ wp_posts.post_title, wp_posts.guid
ИЗ wp_posts, wp_term_relationships, wp_term_taxonomy
ГДЕ wp_posts.ID = wp_term_relationships.object_id
И {$wpdb->prefix}term_taxonomy.taxonomy = 'категория'
И {$wpdb->prefix}term_taxonomy.term_taxonomy_id = {$wpdb->prefix}term_relationships.term_taxonomy_id
И {$wpdb->prefix}posts.post_status = 'публиковать'
И {$wpdb->prefix}posts.post_type = 'post'
И {$wpdb->prefix}term_taxonomy.term_id = '" . $first_cat . "'
И {$wpdb->prefix}posts.ID != '" . $post->ID . "'
ПОРЯДОК ПО РЭНДАМ( )
ПРЕДЕЛ 6");
если ( $ связано ) {
Еогеасп ($связанный как $связанный_пост) {
?>
<li>* <a href="<?php echo $lated_post->guid; ?>" rel="bookmark"
title="<?php echo $ linked_post->post_title; ?>"><?php echo $ linked_post->post_title ?></a></li>
<?php } } еще { ?>
<li>*Похожих статей пока нет.</li>
<?php } }?>
</ul>
Метод 5: Связанный с автором
Этот метод предназначен для получения других статей автора этой статьи в качестве связанных статей. Код выглядит следующим образом:
<ul id="author_based">
<?php
$post_author = get_the_author_meta('user_login');
$args = массив(
'author_name' => $post_author,
'post__not_in' => массив ($post->ID),
'showposts' => 6, // Отображение количества связанных статей
'orderby' => дата, // Сортировка по времени
'caller_get_posts' => 1
);
query_posts($args);
если (have_posts()):
в то время как (have_posts()): the_post(); update_post_caches($posts);
<li>* <a href="<?php the_permalink(); ?>" rel="bookmark"
title="<?php the_title_attribute(); ?>"><?php the_title() ?></a></li>
<?php в конце еще: ?>
<li>*Похожих статей пока нет.</li>
<?php endif; wp_reset_query() ?>;
</ul>
Сравнение эффективности времени
Мы будем использовать предыдущий PHP-код для измерения времени выполнения кода каждой из вышеупомянутых статей, чтобы оценить эффективность каждого из вышеперечисленных методов и предоставить ссылку на ваш выбор. Следующее — получить 6 связанных статей в одной статье. Окончательное время расчета для каждого вышеуказанного метода следующее:
Метод 1: 0,18067908287048 секунд.
Метод 2: 0,057158946990967 секунд.
Способ третий: 0,037126064300537 секунды.
Метод 4: 0,045628070831299 секунд.
Способ пятый: 0,023991823196411 секунды.
Исходный текст: http://www.ludou.org/how-to-generate-related-posts-in-wordpress.html.