List latest posts in WP-Admin

时间:2012-11-08 作者:Amanda Duke

我运行了一个多作者网站,并在wp admin中创建了一个插件,作者可以在其中相互连接和协作。为了增强它,我想显示一个最新帖子的列表,该列表应如下所示:

Latest posts

如图所示,该列表应包含最新的10篇帖子,其中包含用户名、链接的帖子标题以及发布时间(发布时间或发布时间)。

用于此的HTML应为:

<table class="widefat">

            <thead><tr><th scope="col">User</th><th scope="col">Post</th><th scope="col">Time</th></tr></thead>
            <tfoot><tr><th scope="col">User</th><th scope="col">Post</th><th scope="col">Time</th></tr></tfoot>
            <tbody>
                <tr>
                    <td title="Username">Username</td>
                    <td><a href="URL">Post title</a></td>
                    <td title="2012-11-07 16:16:37">8 hours ago</td>
                </tr>       
            </tbody>
    </table>
如何创建这样的列表?请注意,此列表仅在wp admin中使用。

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

你只需要一张桌子class=\'widefat\'get_posts(). 然后运行结果(如果有)并打印表行。

下面是一个非常简单的示例,作为仪表板小部件。请注意缺少I18n–它还没有准备好使用!

<?php
/**
 * Plugin Name: Last posts table
 * Plugin URI:  http://wordpress.stackexchange.com/q/71887/73
 */

add_action( \'wp_dashboard_setup\', \'wpse_71887_register_dashboard_widget\' );

function wpse_71887_register_dashboard_widget()
{
    wp_add_dashboard_widget(
        __FUNCTION__,
        \'Last Posts\',
        \'wpse_71887_render_dashboard_widget\'
    );
}

function wpse_71887_render_dashboard_widget()
{
    $header = \'
        <tr>
            <th>User</th>
            <th>Post</th>
            <th>Time</th>
        </tr>\';

    print "<table class=\'widefat\'>
    <thead>$header</thead>
    <tfoot>$header</tfoot>
    <tbody>";

    // get 10 last private and published posts
    $posts = get_posts(
        array (
            \'numberposts\' => 10,
            \'post_type\'   => array ( \'post\', \'page\' )
        )
    );

    if ( ! $posts )
    {
        print \'<tr><td cols="3">No posts found. <a href="\'
            . admin_url( \'post-new.php\' ) . \'">Write one!</a>\';
    }
    else
    {
        foreach ( $posts as $post )
        {
            printf(
                \'<tr>
                    <td>%1$s</td>
                    <td><a href="%2$s">%3$s</a></td>
                    <td>%4$s ago</td>
                </tr>\',
                esc_html( get_user_by( \'id\', $post->post_author )->display_name ),
                get_permalink( $post->ID ),
                esc_html( $post->post_title ),
                human_time_diff( mysql2date( \'U\', $post->post_date ) )
            );
        }
    }

    print \'</table>\';
}

结果

enter image description here

结束

相关推荐

未定义的属性:stdClass::$Labels in General-template.php post_type_ARCHIVE_TITLE()

我有一个自定义的帖子类型,其中添加了一个标准的标记分类法,如下所示:\'taxonomies\' => array(\'post_tag\'). 我已经在这个CPT的一些帖子中添加了一些标签,这些帖子显示在前端,带有模板标签the_tags() 它生成的链接具有以下格式http://local.mysite.dev/tag/tag1/. 当我单击这样的链接时,将使用tag.php 模板,但如果我添加?post_type=seron_mycpt 到URL的末尾,如下所示http://local.mys