WordPress - Hacer un loop y ordenar por cantidad de caracteres en la tag del post

 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 8 puestos en WordPress (en relación al último mes)
Gráfica de WordPress

Hacer un loop y ordenar por cantidad de caracteres en la tag del post

Publicado por efren (1 intervención) el 22/04/2017 08:45:18
Hola amigos a ver si me doy a enteder estoy enrredado, quiero hacer un loop, para post

ordenado por la cantidad de caracteres que tenga la tag del post

ejemplo:

estoy en un post llamado: primer post
este post tiene las siguientes tags:
1. taguno
2.tag2

quiero hacer un loop que busque todos los post que tambien tengan la tag:
(taguno y tag2.)

y los ordene por la cantidad de caracteres que tiene la tag, es decir la tag:
1. taguno (tiene 6 caracteres)
2. tag2 (tiene 4 caracteres).

entonces el loop debe de imprimir primero todos los post que tengan la tag: (taguno) y despues si todos los post que tengan la tag: (tag2).

1
2
3
4
5
6
7
8
9
10
11
12
$ar = array('orderby' => 'LENGTH(name)', 'order' => 'DESC', 'fields' => 'all');
$tags = wp_get_post_tags($post_id);
if ($tags) {
	$tag_ids = array();
	foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
	$args = array (
		'tag__in' => $tag_ids,
		'post__not_in' => array($post_id),
		'posts_per_page' => 20,
		'ignore_sticky_posts'=>1
	);
}

esto me ordena la tags como yo quiero por cantidad de caracteres, pero al aplicar el loop no jala
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Cómo hacer un loop de posts ordenados por la cantidad de caracteres de la tag

Publicado por Alejandro (169 intervenciones) el 09/04/2024 20:04:47
Hola Efrén.

Entiendo que estás intentando hacer un loop de posts ordenados por la cantidad de caracteres que tiene la tag del post. Has utilizado la función wp_get_post_tags() para obtener las tags del post actual y has creado un array de argumentos para la consulta de los posts.

Aquí hay algunas sugerencias para solucionar el problema con el loop:

1. Asegúrate de que estás ejecutando el loop después de definir los argumentos de la consulta. Puedes utilizar la función get_posts para ejecutar la consulta y obtener los posts. Aquí tienes un ejemplo de cómo podría ser el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$tags = wp_get_post_tags($post_id);
if ($tags) {
    $tag_ids = array();
    foreach($tags as $individual_tag) {
        $tag_ids[] = $individual_tag->term_id;
    }
    $args = array(
        'tag__in' => $tag_ids,
        'post__not_in' => array($post_id),
        'posts_per_page' => 20,
        'ignore_sticky_posts' => 1,
        'orderby' => 'LENGTH(tag_name)', // Ordenar por la longitud del nombre de la tag
        'order' => 'ASC' // Orden ascendente
    );
    $posts = get_posts($args);
 
    // Loop a través de los posts obtenidos
    foreach ($posts as $post) {
        // Aquí puedes mostrar el contenido de cada post
        echo '<h2>' . get_the_title($post->ID) . '</h2>';
        echo '<div>' . get_the_content($post->ID) . '</div>';
    }
}

2. Asegúrate de que estás utilizando la propiedad correcta para ordenar los posts por la longitud de la tag. En el código que has proporcionado, estás utilizando 'LENGTH(name)', pero deberías utilizar 'LENGTH(tag_name)' en su lugar.

3. Verifica que los posts que cumplen con los criterios de la consulta tienen las tags correctas. Puedes utilizar la función var_dump($posts) para imprimir los posts obtenidos y verificar si tienen las tags esperadas.

Espero que estas sugerencias te ayuden a solucionar el problema con el loop de posts ordenados por la cantidad de caracteres de la tag. ¡Buena suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar