La página nueva no obtiene un menu_order

2

El problema es que el orden de la página de inicio ya no es correcto. Los nuevos elementos no están en el mismo orden que el menú, aunque está activo:

'orderby'   => 'menu_order', 
'order'     => 'asc' 

En la base de datos puedo ver que cada página nueva, type=project , solía tener un menu_order asignado pero ya no. El menu_order para cada página nueva es 0 .

¿Cómo es esto posible?

AÑADIDO:

gracias por tu ayuda. Proyectos es un tipo de mensaje personalizado. En una plantilla de página personalizada tengo el siguiente código:

array ('proyectos'),       'orderby' = > 'menu_order',       'orden' = > 'asc'       'post_status' = > 'publicar')); if (have_posts ()) while (have_posts ()): the_post (); ? > La plantilla es creada por otra persona. El propietario / editor del sitio me explicó que él cambió el orden del menú y luego la página mostró los proyectos en el mismo orden. Pero ahora (desde el nuevo tema) esto ya no funciona. Lo único que puedo encontrar en el código es lo que ves arriba. Agregué los atributos de página y ahora puedo cambiar el orden manualmente. Pero esto no es lo que el cliente solía hacer ...

    
pregunta Laura Nieuwenhuis 17.12.2015 - 16:00

1 respuesta

4

Por qué sucede esto

El menu_order predeterminado es 0 , por lo tanto, a menos que modifique manualmente esta nueva Página / Publicación insertada en su base de datos, tendrá correctamente menu_order conjunto.

Puede configurar menu_order para cualquier Página a través de la Edición rápida como se muestra a continuación (o incluso la pantalla Editar página si lo desea) -

Pordefecto,laspublicacionesPublicaciónyTipodepublicaciónpersonalizadanotienenelatributomuen_order,loquesignificaquesiempreseusará0,peroestopuedeseranulado(sigueleyendoparavercómo).

Veoentupreguntaquemencionotype=project;NoestoysegurodesiestárefiriendounTipodepublicaciónpersonalizada,ositypeesunCampopersonalizado.

Suponiendoque"proyecto" es un tipo de publicación personalizada

Puedes agregar el atributo menu_order a cualquier Tipo de publicación personalizada muy fácilmente; simplemente asegúrese de incluir page-attributes en el argumento supports al declarar el Tipo de publicación personalizada -

'supports' => array('title', 'editor', 'excerpt', 'thumbnail', 'page-attributes'),

Suponiendo que "proyecto" es un campo personalizado

Si está intentando mostrar publicaciones del tipo incorporado Publicación , lo que significa que project es un Campo personalizado , entonces debe agregar menu_order de atributo para el tipo Publicación -

add_action('admin_init', 'add_post_page_attributes');
function add_post_page_attributes(){

    add_post_type_support( 'post', 'page-attributes' );

}

Cambiando el "menu_order" predeterminado

Si lo deseas, puedes usar el siguiente código para anular el menu_order predeterminado y configurarlo como desees.

Yo mismo uso este código porque tengo un requisito único para ordenar 1-100 publicaciones en un orden no estándar, seguido del resto en orden alfabético. Uso 100 por defecto, pero puedes cambiarlo a lo que quieras -

add_filter('wp_insert_post_data', 'set_default_menu_order', '99', 2);
function set_default_menu_order($data, $postarr){

    if($data['post_type'] === 'post') :                                                     // Ensure we're saving a desired Post Type...
        $data['menu_order'] = ($data['menu_order'] == '0') ? '100' : $data['menu_order'];   // ...Check to see if a 'menu_order' has been set; if so, keep it, if not, use the default
    endif;

    return $data;   // Return the new data

}
    
respondido por el David Gard 17.12.2015 - 17:26

Lea otras preguntas en las etiquetas