如何创建快捷代码来显示2个最新帖子

时间:2014-06-26 作者:user54779

我想创建一个快捷码,显示任何页面的最后3篇帖子。。。。

应该这样布置

标题

节选阅读更多信息

我在函数中添加了此代码。php

function my_recent_post()
 {
  global $post;

  $html = "";

  $my_query = new WP_Query( array(
       \'post_type\' => \'post\',
       \'posts_per_page\' => 2
  ));

  if( $my_query->have_posts() ) : while( $my_query->have_posts() ) : $my_query->the_post();

       $html .= "<h2>" . get_the_title() . " </h2>";
       $html .= "<p>" . get_the_excerpt() . "</p>";
       $html .= "<a href=\\"" . get_permalink() . "\\" class=\\"button\\">Read more</a>";

  endwhile; endif;

  return $html;
 }
 add_shortcode( \'recent\', \'my_recent_post\' );
它可以工作,除了现在我的主页显示了一个分区中所需的2篇帖子,但问题是在内容下面,也就是说,在带有短代码的分区下面,它显示了整个第二篇文章(见图)。

有什么建议吗?

the problem

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

添加wp_reset_postdata() 在您的while 回路:

        endwhile;
    wp_reset_postdata();
endif;
这将确保在运行快捷码后,还原当前帖子,以便任何模板标记都显示正确的数据。

SO网友:TBI Infotech

enter code here强文本你能试试这个吗

function my_recent_post()
 {
  global $post;

  $html = "";

  $my_query = new WP_Query( array(
       \'post_type\' => \'post\',
       \'posts_per_page\' => 2
  ));

  if( $my_query->have_posts() ) : while( $my_query->have_posts() ) : $my_query->the_post();

  $html.= get_template_part( \'content\', \'excerpt\' );


  endwhile; endif;

  return $html;
 }
 add_shortcode( \'recent\', \'my_recent_post\' ); ?>

 **<h1>create a php file content-excerpt.php and place in your theme</h1>

code of that file is**


<article id="post-<?php the_ID(); ?>">  

    <header class="entry-header">
        <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
        </div>
    </header>

    <div class="entry-excerpt">
        <?php the_excerpt(); ?>
    </div>
    <a href="<?php get_permalink() ?>" class="button">Read more</a>
</article>

结束

相关推荐

Display Custom Posts

我已经创建了名为“review”的自定义帖子。从WP管理员我可以创建这些自定义帖子。但要在用户端显示它们,我面临一个问题。在开发插件时,我不想在主题中创建模板。这是我用来显示自定义帖子的代码。但它显示的是404模板。function review_template_function($template_path){ global $post; if(get_query_var(\'post_type\') == \'review\'){ if(is_single()){&#