2010-07-28 19 views
7

Tengo una página taxonomía-taxonomy.php que tiene que buscar este modo:Wordpress - página taxonomía personalizada de tipo lista mensaje personalizado términos

medida Tipo Título del puesto (recursos)

personalizada Taxonomía 1 (Tipos de recursos)

recursos Tipo Plazo 1 (White Papers) de la

  • Libro Blanco 1

    Libro Blanco salen post 2

    Libro Blanco 3

Recursos Tipo Plazo 2 (Videos)

  • publicar videos 1

    publicar videos 2

    Publicación de videos 3

tratado de hacer sentido de toda la nueva documentación para Wordpress 3.0, pero sólo me hizo más confuso, ya que parece ser mezclado con 2,8.

+0

Lo siento, poco confundido, por lo que desea enumerar todos sus tipos de publicaciones personalizadas, clasificadas por un impuesto personalizado? – TheDeadMedic

+1

Deseo enumerar todas las publicaciones de un tipo de publicación personalizado, ordenadas por un término de taxonomía personalizado. – manon1165

Respuesta

1

Hola manon1165, en realidad acabo de lograr esto. Fue un gran dolor, con suerte mi fragmento de código ayudará.

Hice una plantilla de página personalizada. E hizo algo en la línea de

<?php $categories = get_terms('taxonomy-name', 'orderby=name&hide_empty=0'); $cats = object_to_array($categories); ?> 

Ahora, sólo print_r($cats) y verá el conjunto de las categorías.

Deberá convertir el objeto a una matriz, lo hice con.

function object_to_array($data) 
{ 
    if(is_array($data) || is_object($data)) 
    { 
    $result = array(); 
    foreach($data as $key => $value) 
    { 
     $result[$key] = object_to_array($value); 
    } 
    return $result; 
    } 
    return $data; 
} 

lo hice

<ul id="cat-list"> 
<?php foreach($cats as $cat) { ?> 
    <li><a href="/taxonomy-name/<?php echo $cat['slug']; ?>"><?php echo $cat['name']; ?> (<?php echo $cat['count']; ?>)</a><br><?php echo $cat['description']; ?></li> 
<?php } ?> 
</ul> 

espero que ayude!

+0

Gracias, ayuda mucho, pero ¿pueden decirme cómo puedo obtener contenido de los tipos de publicaciones personalizadas? Estoy usando un complemento de tipo de publicación personalizado y quiero obtener datos usando una lista de categorías personalizada. por favor, ayúdame. –

+0

No he tratado realmente con WP en los últimos dos años. Tal vez comenzar una nueva pregunta? – LostInQuery

6

No es necesario transformar el objeto en una matriz, puede trabajar perfectamente con el objeto sin demasiada molestia. Lo curioso (al menos para mí), es que se obtiene algo como esto:

Array 
    (
     [0] => stdClass Object 
      (
       [term_id] => 7 
       [name] => Magister comunicaciones aplicadas 
       [slug] => magister-comunicaciones-aplicadas 
       [term_group] => 0 
       [term_taxonomy_id] => 7 
       [taxonomy] => linea-de-estudio 
       [description] => 
       [parent] => 0 
       [count] => 4 
     ) 

     [1] => stdClass Object 
      (
       [term_id] => 8 
       [name] => Engagement marketing 
       [slug] => engagement-marketing 
       [term_group] => 0 
       [term_taxonomy_id] => 8 
       [taxonomy] => linea-de-estudio 
       [description] => 
       [parent] => 0 
       [count] => 5 
     ) 
) 

Es básicamente, una serie de objetos, por lo que ha de tratarlos de esa manera. Por ejemplo, si quiero el nombre del primero:

$myterms = get_terms('taxonomy-name', 'orderby=none&hide_empty');  
echo $myterms[0]->name; 

Si necesita recorrer los elementos, puede seguir utilizando foreach();.

foreach ($myterms as $term) { ?> 
    <li><a href="<?php echo $term->slug; ?>"><?php echo $term->name; ?></a></li> <?php 
} ?> 

De esta manera puede publicar los artículos de su taxonomía.

Para los tipos de envíos personalizados, tendrá que crear un bucle como este:

$args = array(
    'post_type' => 'post-type-name', 
    'taxonomy' => 'term' 
    //for example 
    //'resources' => 'videos' 
); 

// assigning variables to the loop 
global $wp_query; 
$wp_query = new WP_Query($args); 

// starting loop 
while ($wp_query->have_posts()) : $wp_query->the_post(); 

the_title(); 
blabla.... 

endwhile; 

continuación, puede crear múltiples bucles de cada uno de uno por cada taxonomía/término :).

Si quiere hacerse aún más elegante (no quiere repetirlo cien veces) puede incluir el segundo bucle dentro del primero y asignar variables a la taxonomía (recursos ie) y los términos que tiene (videos) (de su ejemplo solo el último). La idea es que tenga un bucle de wordpress normal (típico) restringido al tipo de publicación personalizado y en cada uno de los términos.

foreach ($myterms as $term) : ?> 
    <li><a href="<?php echo $term->slug; ?>"><?php echo $term->name; ?></a></li> <?php 

     $term_name = $term->slug; 

     $args = array(
     'post_type' => 'post-type-name', 
     'taxonomy' => "$term_name" 
     ); 

    // assigning variables to the loop 
    global $wp_query; 
    $wp_query = new WP_Query($args); 

    // starting loop posting only 
    while ($wp_query->have_posts()) : $wp_query->the_post(); 

    the_title(); 
    blabla.... 

    endwhile; 

endforeach; ?> 

Obviamente se puede hacer lo inverso también, crear el bucle normal para un tipo personalizado de una sola plantilla (Es parece que tiene sólo uno), y en el interior incluye todos los términos personalizados.

No muy elegante, pero esa es la mejor manera que se me ocurre: P. Espero que alguien pueda entender esto, suena confuso.

¿Tal vez podría ser posible con alguna función de devolución de llamada ?.

+0

Tiene un error en su última muestra de código. Debes eliminar el; desde el final de esta línea: 'taxonomy' => "$ term_name"; – Pascut

+0

Corregido. Gracias :). –

Cuestiones relacionadas