¿Crear una tabla en el estilo de administrador?

44

¿Cuál es la forma recomendada de crear una página con una tabla, al estilo de las tablas que muestran publicaciones o usuarios en el área de administración?

Estoy ampliando el complemento Imágenes de caché , y contiene una tabla con dominios y varias imágenes de ese dominio. Por lo tanto, no hay una tabla existente equivalente sobre la que pueda construir (en la primera versión de esta pregunta, pregunté sobre una tabla con publicaciones, pero allí podría (tal vez) expandir la tabla de publicaciones existente ).

¿Debería basarme en la página de descripción general de la publicación y comenzar con una <table class="widefat">, o hay mejores funciones que manejen esto ahora? ¿Conoces un ejemplo limpio y vacío de una tabla con paginación en la que pueda basar mi trabajo?

Jan Fabry
fuente
3
Hay un nuevo blog para la guía de estilo de la interfaz de usuario de WordPress, puede resultarle útil. dotorgstyleguide.wordpress.com/outline
sorich87
2
Nota personal: scribu agregó un nuevo sistema de tablas ajaxified en WP 3.1 , con una clase base WP_List_Table. Esta pregunta probablemente se puede actualizar con información sobre cómo usarla.
Jan Fabry

Respuestas:

29

Esto es lo que generalmente uso:

<table class="widefat fixed" cellspacing="0">
    <thead>
    <tr>

            <th id="cb" class="manage-column column-cb check-column" scope="col"></th> // this column contains checkboxes
            <th id="columnname" class="manage-column column-columnname" scope="col"></th>
            <th id="columnname" class="manage-column column-columnname num" scope="col"></th> // "num" added because the column contains numbers

    </tr>
    </thead>

    <tfoot>
    <tr>

            <th class="manage-column column-cb check-column" scope="col"></th>
            <th class="manage-column column-columnname" scope="col"></th>
            <th class="manage-column column-columnname num" scope="col"></th>

    </tr>
    </tfoot>

    <tbody>
        <tr class="alternate">
            <th class="check-column" scope="row"></th>
            <td class="column-columnname"></td>
            <td class="column-columnname"></td>
        </tr>
        <tr>
            <th class="check-column" scope="row"></th>
            <td class="column-columnname"></td>
            <td class="column-columnname"></td>
        </tr>
        <tr class="alternate" valign="top"> // this row contains actions
            <th class="check-column" scope="row"></th>
            <td class="column-columnname">
                <div class="row-actions">
                    <span><a href="#">Action</a> |</span>
                    <span><a href="#">Action</a></span>
                </div>
            </td>
            <td class="column-columnname"></td>
        </tr>
        <tr valign="top"> // this row contains actions
            <th class="check-column" scope="row"></th>
            <td class="column-columnname">
                <div class="row-actions">
                    <span><a href="#">Action</a> |</span>
                    <span><a href="#">Action</a></span>
                </div>
            </td>
            <td class="column-columnname"></td>
        </tr>
    </tbody>
</table>

Espero que ayude.

sorich87
fuente
¿es también tener paginación automática insertada de esta manera? (por ejemplo, mostrando la publicación 1-20)
Michiel Standaert
@MichielStandaert No.
kaiser
@MichielStandaert si quieres un resultado paginado puede utilizar paginate_links
tiltdown
Gracias ! (Pero todavía pregunto por qué no usaron :oddpara la fila en lugar de permitirnos agregar una clase cada dos filas ...)
Zachary Dahan
Obviamente hay soluciones "mejores" (como las otras respuestas aquí), pero para una tabla rápida y básica, esto es exactamente lo que estaba buscando. ¡Gracias!
Rinogo
26

Use la API Core, no solo su CSS

Normalmente solo usa una instancia de la WP_List_Tableclase.

Guías:

Beneficios?

¡SÍ!

Puedes agregar paginación, cuadros de búsqueda, acciones y cualquier magia que puedas imaginar (y puedas codificar).

emperador
fuente
1
Sugerencia pequeña como enlace para ver el marcado, clases para la interfaz de administración, sin solo el objetivo de crear tablas: github.com/bueltge/WordPress-Admin-Style
bueltge
1
> El acceso de esta clase está marcado como privado. Eso significa que no está destinado a ser utilizado por los desarrolladores de plugins y temas, ya que está sujeto a cambios sin previo aviso en futuras versiones de WordPress. Si aún desea hacer uso de la clase, debe hacer una copia para usar y distribuir con su propio proyecto, o bien, usarla bajo su propio riesgo.
Austin Ora
@AustinPray ¿ Una copia ? No, por favor no hagas eso. Hay versiones beta, RC y otras versiones preliminares de WP disponibles. Simplemente actualice su implementación / extensión. Si realmente tiene que ir de lado, simplemente escriba algo mejor por su cuenta. El código del núcleo no es que bueno.
Kaiser
@kaiser No dispares al mensajero, esas no son mis palabras. Estaba citando del WP Codex. Aunque suscribirse a las pruebas de regresión perpetua con cada beta y RC no suena mucho mejor que copiar la clase. Estoy de acuerdo en que escribir su propia clase simple es una mejor manera de avanzar.
Austin Pray
@AustinPray Sin resentimientos :) Codex está escrito por personas como tú y yo. De hecho, puede ir ahora y revertir esa declaración y la gente lo citará.
Kaiser
0

¿Es posible que desee agregar un filtro a su lista de tipos de publicaciones personalizadas en el administrador? La respuesta vinculada a continuación muestra cómo hacerlo con una taxonomía, pero podría usar fácilmente otros criterios en su restrict_manage_postsgancho:

Avísame si tienes más preguntas.

MikeSchinkel
fuente
Pido disculpas por la pregunta poco clara. En mi primer ejemplo, era una tabla de publicaciones, y de hecho, podría intentar usar la tabla de publicaciones existente para eso (incluso si solo quiero mostrar los títulos de las publicaciones y luego todas las columnas personalizadas). Pero ahora he editado mi pregunta con un ejemplo concreto: tengo una tabla de dominios, por lo que no hay una tabla existente equivalente que pueda expandir.
Jan Fabry
@ Jan : Ah. Sí, creo que ha encontrado la verdad, que no hay una buena forma encapsulada de hacer esto que no sea escribir HTML (duplicado). A menudo he tenido el mismo problema. Tal vez cree un ticket en trac solicitando esta mejora y vincule el URL / ticket # aquí para que podamos apoyarlo.
MikeSchinkel