Aunque tener la característica de configuraciones persistentes en el núcleo es bueno, puede tomar bastante tiempo antes de que sea realmente aceptado. WordPress 3.5 todavía está bastante lejos.
Entonces, aumentemos la $_REQUEST
matriz global en su lugar.
add_action( 'load-edit.php', 'wpse34956_force_excerpt' );
function wpse34956_force_excerpt() {
$_REQUEST['mode'] = 'excerpt';
}
Esto bloqueará los modos, forzando el excerpt
modo todo el tiempo, así que vamos a dejar que el usuario decida pero que sea persistente utilizando los metadatos del usuario:
add_action( 'load-edit.php', 'wpse34956_persistent_posts_list_mode' );
function wpse34956_persistent_posts_list_mode() {
if ( isset( $_REQUEST['mode'] ) ) {
// save the list mode
update_user_meta( get_current_user_id(), 'posts_list_mode', $_REQUEST['mode'] );
return;
}
// retrieve the list mode
if ( $mode = get_user_meta( get_current_user_id(), 'posts_list_mode', true ) )
$_REQUEST['mode'] = $mode;
}
Puede interpolar aún más post_type
en todos teniendo en cuenta la $_GET['post_type']
variable cuando esté disponible.
add_action( 'load-edit.php', 'wpse34956_persistent_posts_list_mode' );
function wpse34956_persistent_posts_list_mode() {
// take into account post types that support excerpts
$post_type = isset( $_GET['post_type'] ) ? $_GET['post_type'] : '';
if ( $post_type && !post_type_supports( $post_type, 'excerpt' ) )
return; // don't care
if ( isset( $_REQUEST['mode'] ) ) {
// save the list mode
update_user_meta( get_current_user_id(), 'posts_list_mode' . $post_type, $_REQUEST['mode'] );
return;
}
// retrieve the list mode
if ( $mode = get_user_meta( get_current_user_id(), 'posts_list_mode' . $post_type, true ) )
$_REQUEST['mode'] = $mode;
}
¡Viola! Modo de lista persistente por tipo de publicación por usuario, sin hacks.
La pantalla de vista posterior cambia de la vista de lista a la vista de extracto según el valor del parámetro "modo" en la cadena de consulta. Si el parámetro "modo" no está configurado, entonces WordPress se predetermina a la vista de lista.
Desafortunadamente, este parámetro no se puede filtrar, por lo que no hay una manera fácil de controlarlo mediante programación.
Así que voy a hacer algo que nunca hago ... Te diré cómo hackear Core para que esto funcione ...
Agregar un filtro
Abra
/wp-admin/includes/class-wp-posts-list-table.php
y encuentre elprepare_items()
método (alrededor de la línea 81).En la línea 99, WordPress verifica si el parámetro "modo" se configuró o no en la solicitud y lo utiliza para establecer la
$mode
variable global :Vamos a cambiar esta línea para filtrar la configuración predeterminada. Cambie esta línea a:
Ahora, vaya al
functions.php
archivo de su tema y agregue el siguiente código:Esto se conectará al filtro y volverá al modo de extracto de forma predeterminada.
Dado que mi regla personal sobre la piratería de Core requiere que todos los hacks se contribuyan de nuevo al proyecto (de esta manera, pueden incorporarse a Core y ya no contar como un hack), abrí un ticket de Trac para esta mejora y envié el código anterior como un parche Por favor, evalúe el boleto para que pueda entrar en el núcleo para 3.5 (estamos demasiado tarde en el ciclo para 3.4, pero podemos intentar avanzar para la próxima versión).
fuente
$_REQUEST
globaladd_action( 'edit.php', ... )
y cosas por el estilo, mientras esperamos que Core adopte el parche / propuesta?$_REQUEST
objeto yo mismo. Siéntase libre de publicar otra respuesta que describa cómo se podría hacer.De acuerdo, poco después de poner una recompensa, se me ocurrió la siguiente solución. Es el comportamiento predeterminado en todos los sentidos, excepto que selecciona la vista de extracto para cualquier tipo de publicación que desee (en lugar de la vista de lista predeterminada).
NOTA: Recomiendo el enfoque de Soulseekah, si no desea que recuerde la elección del usuario, puede incorporar un poco mi código con su código. NOTA 2: Si / cuando el parche de EAMann es parte del núcleo, obviamente su método sería el mejor, ya que no requeriría que recorrieras el camino. Simplemente no me gusta en este momento, ya que tienes que editar los archivos principales.
fuente
paged
no se tiene en cuenta (paginación) + usar enwp_redirect
lugar de encabezados sin formato podría ser un poco "más limpio", y no estoy seguro de cuán eficiente es la redirección. Aparte de eso, parece interesante. Además, es$_GET['post_type']
posible que no se configure, lo que genera una advertencia si se activan los errores. +1 por el esfuerzo y la paciencia. No me di cuenta de que la pregunta era tan antigua.$_GET
variables. En cuanto a$_GET['post_type']
, sinceramente, no me molestó demasiado eso, ya que solo requería que fuera para un tipo de publicación personalizado, que siempre estaría allí. Obviamente esto se puede omitir. @EAMann, tienes razón, sin embargo, esta fue la mejor solución que se me ocurrió. Intenté configurar manualmente los$_GET
parámetros, esperando que se estableciera ANTES de que se leyera, pero esto no parece ser el caso.