Pregunta sobre Simple Taxonomy Ordering de Wordpress:

wp_dropdown_categories: cómo ordenar por nombre

Un usuario preguntó 👇

Hola,

El uso del argumento ‘orderby’ => ‘name’ no funciona en wp_dropdown_categories, muestra el comando drop’n drop.

(@fmixell)

Hace 1 año, 5 meses

Hola @dobled,

Cuando usa wp_dropdown_categories, ¿también ingresa el nombre de la taxonomía?

Tus argumentos deberían verse así:


$args = array(
     'taxonomy' => 'categories', // Whatever taxonomy you're looking for
     'order_by' => 'name', // Without taxomony above this will return empty
);

wp_dropdown_categories( $args );

¡Avísame si esto te aclara!

Salud,

Freddie

(@dobled)

Hace 1 año, 5 meses

Sí, es una taxonomía personalizada. Estos son los argumentos que utilicé:

	$servicios_args = array(
		'show_option_all'    => '',
		'show_option_none'   => '',
		'option_none_value'  => '-1',
		'orderby'            => 'name',
		'order'              => 'ASC',
		'show_count'         => 0,
		'hide_empty'         => 0,
		'child_of'           => 0,
		'exclude'            => '',
		'include'            => '',
		'echo'               => 1,
		'selected'           => get_query_var($values['servicios_name']),
		'hierarchical'       => 0,
		'name'               => $values['servicios_name'],
		'id'                 => 'servicios_select',
		'class'              => 'postform',
		'depth'              => 0,
		'tab_index'          => 0,
		'taxonomy'           => 'servicio',
		'hide_if_empty'      => false,
		'value_field'	     => 'slug',
	);

(@fmixell)

Hace 1 año, 5 meses

@dobled

Recomendaría probar el order' => 'ASC', artículo y vea si eso ayuda. O podrías moverlo arriba orderby porque creo que estos podrían ser contradictorios.

Déjeme saber si esto ayuda.

– Freddie

Esta respuesta fue modificada hace 1 año, 5 meses.

(@dobled)

Hace 1 año, 5 meses

Elimine el ‘orden’ y coloque el ‘orderby’ como el primer elemento de la matriz. Sigue igual 🙁

(@fmixell)

Hace 1 año, 5 meses

De acuerdo, he analizado problemas anteriores en Github y parece que tiene razón en que no puede usar el comando a menos que filtre para deshabilitar el comando de término personalizado. Este término es ‘term_clauses’ y puede eliminarse pasando este código cuando sea necesario.

Esto debe agregarse a sus temas functions.php y si tiene un tema hijo, debe colocarlo allí para que las actualizaciones futuras del tema no eliminen este código.


// 42 could be swapped out for any page id or title
// ex: is_page( 'Contact' )
// This will check that you're not in the admin and you're on the right page.

if ( ! is_admin() && is_page( 42 ) ) {
    remove_filter( 'terms_clauses', array( $this, 'yikes_alter_tax_order' ), 10 );
}

Esta respuesta fue modificada hace 1 año, 5 meses. Esta respuesta fue modificada hace 1 año, 5 meses. Razón: error tipográfico

(@dobled)

Hace 1 año, 5 meses

Algunas páginas utilizan este botón desplegable. Creo que sería mejor quitar el filtro, llamar al menú desplegable y reemplazar el filtro nuevamente. ¿Lata?

(@fmixell)

Hace 1 año, 5 meses

Sí, si está haciendo esto en su archivo de plantilla temática, puede colocar la función de eliminar filtro justo encima de donde está usando este menú desplegable y debería funcionar. Dime que te parece. Sin embargo, es difícil decir que no vea su código, así que avíseme si funciona.

(@fmixell)

Hace 1 año, 5 meses



remove_filter( 'terms_clauses', array( $this, 'yikes_alter_tax_order' ), 10 );

$servicios_args = array(
		'show_option_all'    => '',
		'show_option_none'   => '',
		'option_none_value'  => '-1',
		'orderby'            => 'name',
		'order'              => 'ASC',
		'show_count'         => 0,
		'hide_empty'         => 0,
		'child_of'           => 0,
		'exclude'            => '',
		'include'            => '',
		'echo'               => 1,
		'selected'           => get_query_var($values['servicios_name']),
		'hierarchical'       => 0,
		'name'               => $values['servicios_name'],
		'id'                 => 'servicios_select',
		'class'              => 'postform',
		'depth'              => 0,
		'tab_index'          => 0,
		'taxonomy'           => 'servicio',
		'hide_if_empty'      => false,
		'value_field'	     => 'slug',
	);

wp_dropdown_categories( $servicios_args );

(@dobled)

Hace 1 año, 5 meses

Esto no funciona: no puedo acceder a este método con $ fuera de clase.

El plugin no coloca inmediatamente la clase en una variable y no sé cómo eliminar el filtro sin él.

Modifiqué temporalmente el plugin. No es la mejor solución pero funciona …

Gracias de todos modos

(@fmixell)

Hace 1 año, 5 meses

Lamento que no te haya funcionado.

Sin embargo, si necesita obtener una lista de categorías mediante programación y luego ordenarlas, como mejor le parezca, y garantizar que ningún plugin agregará ningún problema a su pedido, puede usar lo siguiente.


$categories = get_categories();

	// Compares string names for nested objects.
	function cmp( $cat_one, $cat_two ) {
    	return strcmp($cat_one->name, $cat_two->name);
	}

	// Sorts categories array by nested names.
	usort($categories, 'cmp');

	// Displays out categories by nested names in list.
	foreach( $categories as $category ) {
		$category_link = sprintf( 
			'<a href="%1$s" alt="%2$s">%3$s</a>',
			esc_url( get_category_link( $category->term_id ) ),
			esc_attr( sprintf( __( 'View all posts in %s', 'textdomain' ), $category->name ) ),
			esc_html( $category->name )
		);
		 
		echo '<p>' . sprintf( esc_html__( '%s', 'textdomain' ), $category_link ) . '</p> ';
	}

Esto mostrará una lista de categorías, pero puede modificar el marcado para desplegar o crear lo que desee.

Qué está sucediendo: – Estamos obteniendo un conjunto de Term Objects con get_categories()
– Luego tenemos nuestra función de comparación que nos permite comparar dos filas para ver en qué orden deben estar. – Luego pasamos esos Term Objects a usort que reordena el término objetos en name llave. – finalmente hacemos un bucle con foreach para mostrar todas las categorías en la matriz.

– Si sigue esta ruta, asegúrese de escapar de su salida correctamente como lo estoy haciendo arriba.

Si desea utilizar este código y necesita ayuda para convertirlo en una lista desplegable, avíseme que le configuraré otro ejemplo de código.

– Salud

Freddie

(@fmixell)

Hace 1 año, 4 meses

@dobled,

¡Buenas noticias, esta función se ha agregado al plugin para permitir temas más altos!

remove_filter( 'terms_clauses', [ Yikes_Custom_Taxonomy_Order::get_instance(), 'set_tax_order' ], 10, 3 );

wp_list_categories( [
   'orderby' => 'name',
   'order'   => 'ASC',
] );

add_filter( 'terms_clauses', [ Yikes_Custom_Taxonomy_Order::get_instance(), 'set_tax_order' ], 10, 3 );

Este ejemplo le permitirá enumerar categorías por nombre ascendente. A continuación, debemos restaurar nuestro pedido personalizado y mostrar el pedido personalizado nuevamente.

¡Avíseme si todavía enfrenta este problema y si eso lo resuelve por usted!

Salud,

Freddie

¿Solucionó tu problema??

0 / 0

Deja una respuesta 0

Tu dirección de correo electrónico no será publicada.