2009-06-18 15 views
7

que estoy tratando de hacer un sitio de WordPress que tiene seis listas en una página, cada una lista con las publicaciones de una categoría diferente. Sencillo.WordPress - la producción de una lista de mensajes filtrados por etiqueta y luego categoría

Pero luego, si un usuario selecciona una etiqueta, llevándolas a esa página de archivo de etiquetas, quiero que sigan viendo la plantilla de seis listas, pero todas las publicaciones dentro de cada categoría también son filtradas por la etiqueta. Entonces, las listas de publicaciones se filtran primero por etiqueta y luego por categoría.

Por lo que puedo decir, no hay forma de hacerlo con query_posts ni nada, se necesita un uso más avanzado de la base de datos, ¡pero no tengo ni idea de cómo hacerlo! Creo que hay una pregunta similar aquí, pero como sé muy poco PHP y no MySQL, ¡no puedo entender las respuestas!

Respuesta

5

derecho, que finalmente han encontrado una solución relativamente simple a este.

Hay un error en WordPress que impide una consulta tanto de la categoría como de las etiquetas, por lo que query_posts('cat=2&tag=bread'); no funcionaría, pero una forma de evitar esto es query_posts('cat=2&tag=bread+tag=bread'); que funciona mágicamente.

En una plantilla tag.php, quería que para recoger la etiqueta de ese archivo, así que tuve que hacer esto:

<?php query_posts('cat=12&tag='.$_GET['tag'].'+'.$_GET['tag']); ?> 

que funciona perfectamente.

0

De acuerdo con the Wordpress API, puede filtrar por etiquetas dentro de una llamada al query_posts.

Ejemplos:

query_posts('tag=cooking'); 

query_posts('tag=bread,baking'); 

query_posts('tag=bread+baking+recipe'); 
+0

Desafortunadamente esta consulta anular una categoría, y no se puede utilizar para filtrar por categoría dentro de una etiqueta, sólo se mostrará todos los mensajes con esa categoría y todos los puestos dentro de esa etiqueta. –

+0

Inicialmente, podría llamar a get_query para obtener una serie de publicaciones filtradas por etiqueta. A continuación, repítelo y asigne manualmente las publicaciones en una matriz para cada una de las seis categorías. –

+0

Esto suena como la cosa perfecta, pero no soy PHPer, ¡así que no tengo ni idea de cómo hacerlo! –

2

probar este código:

query_posts('tag=selected_tag'); 

while (have_posts()) : the_post(); 


    foreach((get_the_category()) as $category) 
     { 

     if ($category->cat_name == 'selected_category') 
      { 
      // output any needed post info, for example: 
      echo the_title(); 
      } 

     } 


endwhile; 
+0

No hay errores ni nada, simplemente nada producido: S –

+0

haber sustituido 'selected_tag' y 'selected_category' con sus propios valores, ¿verdad? 8) Puede ser útil colocar este código en la plantilla de wordpress y hacer 6 de ellos para cada página. – Wiseman

+0

Había hecho las dos cosas :) –

Cuestiones relacionadas