在边栏中获取下一篇和前一篇文章的标题?

时间:2010-10-10 作者:John Thomas

让我们假设我有以下标题的帖子:

PostA(被分配到“类别1”)

  • PostX(category 2)
  • PostB(类别1)
  • PostC(类别1)
  • PostD(类别1)
  • PostY(category 2)
  • 邮政(1类)
  • 当访问者阅读Post时,如何在侧栏中显示:

    以前的帖子:“PostA”(当然这里是链接)
    “PostB”

    下一篇帖子:
    “PostD”
    “PostE”

    查看同一类别的前两个和后两个职位。(如果一篇文章有更多的类别,我们会选择第一个或最后一个,这并不重要)。

    此外,如果无法显示上一个(&A);接下来的两个职位,也可以只接受前一个和下一个职位。(我知道这有一些WP功能,但如果可能的话,我们更喜欢两个帖子)。

    当然,我们还想显示标题中的第一个字符(比如22)。我们不想显示像“Next Post”或类似的静态文本。

    TIA公司

    1 个回复
    最合适的回答,由SO网友:sorich87 整理而成

    现有的WordPress功能仅用于显示上一篇或下一篇文章。我很快编写了显示任意数量帖子的函数。

    在主题函数中粘贴以下内容。php文件:

    function custom_get_adjacent_posts( $in_same_cat = false, $previous = true, $limit = 2 ) {
        global $post, $wpdb;
    
        $op = $previous ? \'<\' : \'>\';
    
        if ( $in_same_cat ) {
            $cat_array = wp_get_object_terms($post->ID, \'category\', array(\'fields\' => \'ids\'));
    
            $join = " INNER JOIN $wpdb->term_relationships AS tr ON p.ID = tr.object_id INNER JOIN $wpdb->term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id AND tt.taxonomy = \'category\' AND tt.term_id IN (" . implode(\',\', $cat_array) . ")";
        }
    
        $posts = $wpdb->get_results( $wpdb->prepare( "SELECT p.* FROM wp_posts AS p $join WHERE p.post_date $op \'%s\' AND p.post_type = \'post\' AND p.post_status = \'publish\' ORDER BY p.post_date DESC LIMIT $limit", $post->post_date, $post->post_type ) );
    
        return $posts;
    }
    
    function custom_adjacent_posts_links( $in_same_cat = false, $previous = true, $limit = 2 ) {
        $prev_posts = custom_get_adjacent_posts( $in_same_cat, $previous, $limit );
        if( !empty($prev_posts) ) {
            echo ($previous) ? \'<h3>Previous Posts:</h3>\' : \'<h3>Next Posts:</h3>\';
            echo \'<ul>\';
            foreach( $prev_posts as $prev_post ) {
                $title = apply_filters(\'the_title\', $prev_post->post_title, $prev_post->ID);
                echo \'<li><a href="\' . get_permalink( $prev_post ) . \'">\' .$title . \'</a></li>\';
            }
            echo \'</ul>\';
        }
    }
    
    在要显示帖子的侧栏文件中,使用custom_adjacent_posts_links( true ); 显示同一类别中的前两篇文章,以及custom_adjacent_posts_links( true, false ); 显示同一类别中的下两篇文章。

    结束

    相关推荐

    How to add Posts to a Page

    我想要一个域名。com/blog页面,其中包含我的所有博客帖子。问题是,目前要访问我的博客,permalink似乎总是。。。域/类别/类别名称我可以更改永久链接,但我不希望它像域一样。com/blog/featured什么的。我想有一个网页,是域/博客,将显示我的所有博客文章。有办法做到这一点吗?我的想法只是创建一个包含我所有帖子的页面。我该怎么做?谢谢