Как показать похожие сообщения по категориям
-
-
возможный дубликат [Как отображать похожие сообщения из той же категории?] (http://wordpress.stackexchange.com/questions/30039/how-to-display-related-posts-from-same-category)possible duplicate of [How to display related posts from same category?](http://wordpress.stackexchange.com/questions/30039/how-to-display-related-posts-from-same-category)
- 0
- 2012-02-05
- kaiser
-
2 ответ
- голосов
-
- 2012-02-05
Вопрос уже задан,и ответ опубликован
Как отображать похожие сообщения из той же категории? а>
Добавьте этот код в свой single.php после цикла везде,где вы хотите отображать связанный пост,
<?php $related = get_posts( array( 'category__in' => wp_get_post_categories($post->ID), 'numberposts' => 5, 'post__not_in' => array($post->ID) ) ); if( $related ) foreach( $related as $post ) { setup_postdata($post); ?> <ul> <li> <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a> <?php the_content('Read the rest of this entry »'); ?> </li> </ul> <?php } wp_reset_postdata(); ?>
Будет отображено связанное сообщение из той же категории с выдержкой и заголовком сообщения, однако,если вы хотите,чтобы этот код отображал только заголовок связанной публикации,удалите эту строку,
<?php the_content('Read the rest of this entry »'); ?>
The question has already been asked and the answer has been posted too,
How to display related posts from same category?
Add this code inside your single.php after a loop wherever you want to show related post,
<?php $related = get_posts( array( 'category__in' => wp_get_post_categories($post->ID), 'numberposts' => 5, 'post__not_in' => array($post->ID) ) ); if( $related ) foreach( $related as $post ) { setup_postdata($post); ?> <ul> <li> <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a> <?php the_content('Read the rest of this entry »'); ?> </li> </ul> <?php } wp_reset_postdata(); ?>
It will display related post from the same category with the post excerpt and title , however if want this code to display just the title of related post then remove this line,
<?php the_content('Read the rest of this entry »'); ?>
-
извините,я новичок в wordpress и PHP. Если вы не возражаете,не могли бы вы сказать мне,как поместить этот код в мой single.php??sorry I am noob in wordpress and PHP.If yu dont mind, could yu tell me how to put that code in my single.php??
- 0
- 2012-02-05
- Felix
-
прочтите мой ответ еще раз,я добавил еще несколько деталей (ПРОВЕРЕНО)read my answer again i have added few more details (TESTED)
- 1
- 2012-02-05
- Sufiyan Ghori
-
Можно (может быть) закрыть голосование как дубликат?You can (maybe) close vote as dublicate?
- 0
- 2012-02-05
- kaiser
-
@Xufyan этот код показывает мне следующую ошибку,когда я использовал его после комментария Неустранимая ошибка: вызов неопределенной функции odd_title ()@Xufyan that code shows me ethe following error when i used it after the comment Fatal error: Call to undefined function odd_title()
- 0
- 2012-02-05
- Felix
-
извините,замените "ODD" на "the" в приведенном выше кодеsorry, replace 'ODD' with 'the' in the above code
- 1
- 2012-02-05
- Sufiyan Ghori
-
@Xufyan Если я возьму эту ошибку,создайте строку Php ADDtitle (30);?> Я не получаю сообщения,я просто получаю пять маркеров без сообщения или заголовка@Xufyan If i yake that error making line I get no post i just get five bullets with no post or title
- 0
- 2012-02-05
- Felix
-
ошибка удалена из кода,и теперь он работает отлично (Протестировано),скопируйте измененный код из моего ответаthe error is removed from the code and now it is working perfectly fine (Tested), copy the modified code from my answer
- 1
- 2012-02-05
- Sufiyan Ghori
-
@Xufyan Но теперь он показывает только заголовок поста с постоянной ссылкой: \ какие-нибудь советы??@Xufyan But now it shows only the post title with perma link :\ any tips??
- 0
- 2012-02-05
- Felix
-
это означает,что вы удалили эту строку кода,, добавь его на местоit means you have removed this line of code, , add it back where it was
- 1
- 2012-02-05
- Sufiyan Ghori
-
@Xufyan нет,я не снимаю с линии. Попробовал еще раз,он показывает мне заголовок с постоянной ссылкой.@Xufyan no I dint take off the line.Tried again still it shows me the title with perma link.
- 0
- 2012-02-05
- Felix
-
давайте [продолжим обсуждение в чате] (http://chat.stackexchange.com/rooms/2392/discussion-between-felix-and-xufyan)let us [continue this discussion in chat](http://chat.stackexchange.com/rooms/2392/discussion-between-felix-and-xufyan)
- 0
- 2012-02-05
- Felix
-
Это намного лучше,чем ответ,на который вы ссылалисьThis is way better than the answer to which you linked
- 0
- 2014-09-04
- Claudiu Creanga
-
- 2018-07-02
Вот еще один чистый и очень гибкий вариант:
Поместите этот код в свой файлfunctions.php
function example_cats_related_post() { $post_id = get_the_ID(); $cat_ids = array(); $categories = get_the_category( $post_id ); if(!empty($categories) && is_wp_error($categories)): foreach ($categories as $category): array_push($cat_ids, $category->term_id); endforeach; endif; $current_post_type = get_post_type($post_id); $query_args = array( 'category__in' => $cat_ids, 'post_type' => $current_post_type, 'post_not_in' => array($post_id), 'posts_per_page' => '3' ); $related_cats_post = new WP_Query( $query_args ); if($related_cats_post->have_posts()): while($related_cats_post->have_posts()): $related_cats_post->the_post(); ?> <ul> <li> <a href="<?php the_permalink(); ?>"> <?php the_title(); ?> </a> <?php the_content(); ?> </li> </ul> <?php endwhile; // Restore original Post Data wp_reset_postdata(); endif; }
Теперь вы можете просто вызвать функцию в любом месте вашего сайта,используя:
<?php example_cats_related_post() ?>
Вы можете удалить элементы списка или изменить их стиль в соответствии с вашими потребностями.
Here another clean and very flexible option:
Put this code in your functions.php file
function example_cats_related_post() { $post_id = get_the_ID(); $cat_ids = array(); $categories = get_the_category( $post_id ); if(!empty($categories) && is_wp_error($categories)): foreach ($categories as $category): array_push($cat_ids, $category->term_id); endforeach; endif; $current_post_type = get_post_type($post_id); $query_args = array( 'category__in' => $cat_ids, 'post_type' => $current_post_type, 'post_not_in' => array($post_id), 'posts_per_page' => '3' ); $related_cats_post = new WP_Query( $query_args ); if($related_cats_post->have_posts()): while($related_cats_post->have_posts()): $related_cats_post->the_post(); ?> <ul> <li> <a href="<?php the_permalink(); ?>"> <?php the_title(); ?> </a> <?php the_content(); ?> </li> </ul> <?php endwhile; // Restore original Post Data wp_reset_postdata(); endif; }
Now you can simply call the function anywhere in your site using:
<?php example_cats_related_post() ?>
You may want to remove the list elements or style them as per your need.
В моей галерее я хочу показать другие изображения под текущим изображением (в одном сообщении).Я видел больше кодов,но я прошу указать категорию,но я не хочу указывать категорию вручную в коде. Я хочу,чтобы сам код получал идентификатор или имя категории. Мне было бы намного проще,если бы я получил полные сообщениявместо заголовка сообщения,чтобы я мог отображать его как в домашней странице,так и в категории