在主页上显示最新的5个帖子

时间:2013-02-14 作者:Nikki Mather

我目前正在使用一个定制的Twentyle2Child主题,并希望使用一个快捷码在主页上显示最后5篇文章。我已尝试使用以下代码(添加到functions.php) 但是没有用-当我在主页上添加快捷码时,它不会显示任何内容,尽管就我所能看到的而言,它应该会显示,而且我有一个测试帖子。

function custom_prev_posts($limit = 5){
global $wpdb, $post;
$html = \'\';
$prev_posts = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE $wpdb->posts.post_date < \'%s\' AND $wpdb->posts.post_type = \'post\' AND $wpdb->posts.post_status = \'publish\' ORDER BY $wpdb->posts.post_date DESC LIMIT $limit", $post->post_date ) ); 

if($prev_posts){
$html .= \'<ul>\';
foreach ( $prev_posts as $prev_post  ) {
$html .= \'<li><a href="\' . get_permalink( $prev_post->ID ) . \'">\' .$prev_post->post_title . \'</a></li>\';
}
$html .= \'</ul>\';
}
return $html;
}

add_shortcode(\'last5\', \'custom_prev_posts\');
我想这个问题可能与2012年的主题有关。有没有人知道我做错了什么,或者有没有人知道如何在一个页面中显示最新的5篇帖子?

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

问题是你的$limit var,您不能设置这样的默认值,因为WordPress会用空值覆盖它。查看Shortcode API 获取传递和设置快捷码属性的正确方法。

function custom_prev_posts( $atts ){
    extract( shortcode_atts( array(
        \'limit\' => 5
    ), $atts ) );
    // the rest of your code, $limit now works correctly
}
现在,您还可以通过向快捷码添加限制来设置自定义限制:[last5 limit=10] 虽然last5是一个可以显示除5以外的帖子数量的短代码的奇数名称:)

此外,为了将来的参考,enable debugging 因此,您可以看到代码生成的错误。

SO网友:birgire

您可以尝试以下操作:

function custom_prev_posts($limit){
    extract( shortcode_atts( array(
    \'limit\' => 5,
    ), $atts ) );

    // check input paramters
    $limit = (int)$limit; // allow only numbers

    // output
    $html = \'\';
    $html .= \'<ul>\';
    $args = array(\'numberposts\' => $limit);
    $recent_posts = wp_get_recent_posts($args);
    foreach( $recent_posts as $recent ){
        $html .= \'<li><a href="\' . get_permalink($recent["ID"]) . \'" title="\'.esc_attr($recent["post_title"]).\'" >\' .   $recent["post_title"].\'</a> </li> \';
    }
    $html .= \'</ul>\';
    return $html;
}
add_shortcode(\'last5\', \'custom_prev_posts\');
我使用的位置wp_get_recent_posts(), 您可以在法典中了解更多信息:

http://codex.wordpress.org/Function_Reference/wp_get_recent_posts

Edit:您一定要查看@Milo提供的短码api的链接

结束

相关推荐

如何使用插件编辑wp-signup.php内容

我需要你的帮助,因为我对wp-signup.php 我试图解决但无法解决的页面。问题如下:,我想将“在几秒钟内获取您自己的%s帐户”替换为“您的网站上将显示带星号的字段,供全世界查看”。我知道我可以去wp-signup.php 分页并硬编码中的文本signup_user() 但我希望它能在插件的帮助下处理,这样即使wordpress升级,也不会影响文本</我想删除带有标签的单选按钮(请输入用户名)从signup_user()我们将感谢您的任何帮助,我正在等待您的回复。