Listar las últimas publicaciones en WP-Admin

4

Ejecuto un sitio de varios autores y he creado un complemento en wp-admin donde los autores pueden conectarse y colaborar entre sí. Para mejorarlo, quiero mostrar una lista de las últimas publicaciones, esta lista debería tener este aspecto:

Comosemuestraenlaimagen,lalistadebecontenerlasúltimas10publicacionesconelnombredeusuario,eltítulodelapublicaciónvinculadaycuándosepublicó(yaseahacecuántotiempoolahoraexactadelapublicación).

ElHTMLparaestodeberíaser:

<tableclass="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>

¿Cómo puedo crear una lista como esta? Tenga en cuenta que esta lista se utilizará únicamente en wp-admin.     

    
pregunta Amanda Duke 08.11.2012 - 01:54

1 respuesta

4

Todo lo que necesitas es una tabla con class='widefat' y get_posts() . Luego ejecuta los resultados (si los hay) e imprime las filas de la tabla.

Aquí hay un ejemplo muy simple como un widget de panel de control. Tenga en cuenta la falta de I18n, ¡no está listo para usar!

<?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>';
}

Resultado

    
respondido por el fuxia 08.11.2012 - 04:07

Lea otras preguntas en las etiquetas