在页面上显示特定帖子摘录的简单方法

时间:2015-05-05 作者:Davor Josipovic

假设我在wordpress网站上有3篇帖子,标题为:

  • Test_post_1 带标签test_tag
  • Test_post_2 无标签Test_post_3 带标签test_tagpage_1. 在那一页上我有一些文字。在该页的末尾,我想用tag链接到我的2篇文章test_tag. 我希望这两个链接显示为帖子摘录,带有帖子标题、特色图片和大约50个单词。(Here is an example of such post excerpts.)

    我对此做了一些研究,似乎我需要使用phpthe_excerpt() 作用这将导致在wordpress中生成特定的页面模板或调整页面php代码。我已经有了一些关于如何做到这一点的线索,但这不是我想要的<我想用一种简单的方法从wordpress的页面编辑器中添加帖子专家。像短代码这样简单的东西。类似于[excerpt tag="test_tag"] 我可以把它放在页面编辑器的文本后面。有人有类似简单方法的线索吗

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

你需要一些东西。A.shortcode handler, 和acustom query:

function wpse_186346_excerpt_length() {
    return 50;
}

function wpse_186346_excerpt( $atts ) { 
    $atts = wp_parse_args( $atts,
        array(
            \'posts_per_page\' => 2,
            // Any other default arguments
        )
    );

    // We don\'t need paging, always save a query
    $atts[\'no_found_rows\'] = true;

    // Create query based off arguments from shortcode  
    $query = new WP_Query( $atts );

    // Start the buffer to "catch" our output below, so that we can return it as a string
    ob_start();

    // Set our custom excerpt length
    add_filter( \'excerpt_length\', \'wpse_186346_excerpt_length\' );

    // Loop over the posts and output whatever markup you need
    while ( $query->have_posts() ) {
        $query->the_post();
        the_title( \'<h4 class="excerpt-title"><a href="\' . get_permalink() . \'">\', \'</a></h4>\' );
        the_excerpt();  
    }

    // Remove our custom excerpt length
    remove_filter( \'excerpt_length\', \'wpse_186346_excerpt_length\' );

    // Restore the current global post
    wp_reset_postdata();

    return ob_get_clean();  
}

add_shortcode( \'excerpt\', \'wpse_186346_excerpt\' );
并像这样使用它:

[excerpt tag="test_tag"]
您的短代码参数只需要匹配those available, 因此,您不仅限于标签!

结束

相关推荐

get_post_fields as an excerpt

我有一个奇怪的问题,我已经建立了我的网站和我的循环等。但在我的侧边栏上,我想添加一种随机的帖子显示,但我不想显示整个帖子,我在实现这一点上遇到了一些困难,所以如果你有任何其他方法想要共享,请让我知道:)我现在想做的是缩短显示的内容,我知道你可以用excerpt() 但是如果你看看我必须要做的方法,你就会明白我的意思,因为我在用典型的方法做这件事时遇到了问题。我的索引:if(have_posts()){ while(have_posts()):the_post();