私は複数の作者のサイトを運営しています、そして作者が互いに接続して共同作業できるプラグインをwp-adminで作成しました。それを強化するために、私は最新の投稿のリストを表示したいです、このリストはこのように見えるべきです:
写真が示すように、リストには、ユーザー名、リンクされた記事のタイトル、および投稿された日時(過去の投稿日時または投稿の正確な時間)を含む最新の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でのみ使用されることに注意してください。
必要なのはclass='widefat'
とget_posts()
のテーブルだけです。次に、結果を調べ(ある場合)、表の行を印刷します。
これがダッシュボードウィジェットとしての非常に単純な例です。国際化の欠如に注意してください - それは使用する準備ができていません!
<?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>';
}