Get_the_terms: muestra todos los tipos de publicaciones

9 minutos de lectura

avatar de usuario
olén

La pregunta ha sido actualizada. Vea a continuación la última versión

Tengo problemas para ver todos los tipos de publicaciones cuando uso publicaciones personalizadas. Esto se basa en el isótopo, y se supone que el usuario debe hacer clic en los enlaces para ver las publicaciones dentro de esa categoría.

Aparecen todas las publicaciones creadas por las publicaciones estándar de WordPress, pero ninguna creada con Tipos (publicaciones personalizadas).

<ul id="filters" class="whitetext whitelink myeluft">
    <li><a href="#" data-filter="*" class="selected">Alle</a></li>
    <li><a href="#" data-filter=".foto">Foto</a></li>
    <li><a href="#" data-filter=".video">Video</a></li>
    <li><a href="#" data-filter=".web">Web</a></li>
</ul>

<?php $the_query = new WP_Query( 'posts_per_page=50' ); //Check the WP_Query docs to see how you can limit which posts to display ?>
<?php if ( $the_query->have_posts() ) : ?>
    <div id="isotope-list">
        <?php while ( $the_query->have_posts() ) : $the_query->the_post(); 


        // Query posts - post_types
        $anypost = get_posts( array(
             'post_type'      => 'any' // every post type, but not attachments
        ) );

        $termsArray = get_the_terms( $post->ID, "category", $anypost);  //Get the terms for this particular item
        $termsString = ""; //initialize the string that will contain the terms
            foreach ( $termsArray as $term ) { // for each term 
                $termsString .= $term->slug.' '; //create a string that has all the slugs 
            }
        ?> 
        <div class="<?php echo $termsString; ?> item col-md-3"> <?php // 'item' is used as an identifier (see Setp 5, line 6) ?>
            <h3><?php the_title(); ?></h3>
                <?php if ( has_post_thumbnail() ) { 
                          the_post_thumbnail();
                    } ?>
        </div> <!-- end item -->
        <?php endwhile;  ?>
    </div> <!-- end isotope-list -->
<?php endif; ?>

Como puede ver, he intentado arreglarlo insertando el siguiente código, pero aún no muestra todos los tipos de publicaciones.

// Query posts - post_types
$anypost = get_posts( array(
    'post_type'      => 'any' // every post type, but not attachments
) );

$termsArray = get_the_terms( $post->ID, "category", $anypost);  //Get the terms for this particular item

he leído Este artículopero me encontré más perdida que comenzada/

¿Cuál sería una solución de trabajo?

Actualizar

Al usar el siguiente código, puedo ver todas las publicaciones, pero no puedo filtrarlas. Ver página aquí: http://goo.gl/e3cLuM (Desplázate hacia abajo hasta que veas todas las publicaciones)

<?php $post_type="any";
$post_taxonomy = 'any';
// Get all
$terms = get_terms( $post_taxonomy );

$portfolio = new WP_Query('post_type=".$post_type."&post_per_page=-1'); ?>
// First we loop our porfolio_category to show all categories as filter.
<ul id="filters" class="whitetext whitelink myeluft">
    <a href="#" data-filter="*" class="selected"><li class="smoothtrans">Alle</li></a>
    <a href="#" data-filter=".foto"><li class="smoothtrans">Foto</li></a>
    <a href="#" data-filter=".video"><li class="smoothtrans">Video</li></a>
    <a href="#" data-filter=".web"><li class="smoothtrans">Web</li></a>
</ul>

<?php if ( $portfolio->have_posts() ) : ?>
                <div id="isotope-list">
                    <?php while ( $portfolio->have_posts() ) : $portfolio->the_post();
// Get current post terms.
                        $item_terms = wp_get_post_terms( get_the_ID(), $post_taxonomy, $args );
                        $classes="";
                        // Append classes to use with each item.
                        foreach($item_terms as $item_term ){
                            $classes .= $item_term->slug.' ';
                        }
                        ?>
                        <div class="<?php echo $termsString; ?> item col-md-4"> 
                            <ul class="grid cs-style-3">
                                <li>
                                    <figure>
                                        <?php // 'item' is used as an identifier (see Setp 5, line 6) ?>
                                        <?php if ( has_post_thumbnail() ) { 
                                              the_post_thumbnail();
                                        } ?>
                                        <figcaption class="lefttext">
                                            <h3><?php the_title(); ?></h3>
                                            <span class="offgrey">Nettside</span>
                                            <a href="#" class="smoothtrans">Se prosjekt</a>
                                        </figcaption>
                                    </figure>
                                </li>
                            </ul>             
                        </div> <!-- end item -->
                    <?php endwhile;  ?>
                </div> <!-- end isotope-list -->
            <?php endif; ?>

  • ¿Está utilizando una taxonomía personalizada para su tipo de publicación personalizada?

    – Touqeer Shafi

    5 de julio de 2015 a las 10:24

  • Gracias por responder. Eso es negativo, pero sería una posibilidad agregar taxonomía si es necesario para que funcione.

    – Olén

    5 de julio de 2015 a las 10:28

  • ¿Has probado array(‘posts_per_page’=>50,’post_type’=>any) para WP_Query?

    – CᴴᵁᴮᴮʸNᴵᴺᴶᴬ

    5 julio 2015 a las 10:30

  • Creo que hay un error de sintaxis en algún lugar de ese código. Al menos no funcionó.

    – Olén

    5 de julio de 2015 a las 10:39

  • Exactamente en qué plantilla es esto

    – Pieter Goosen

    5 de julio de 2015 a las 10:41

Suponiendo que tenemos un tipo de publicación personalizado llamado portfolio y taxonomía personalizada llamada portfolio_category

<?php $post_type="portfolio";
$post_taxonomy = 'portfolio_category';
//First get all terms of portfolio_category.
$terms = get_terms( $post_taxonomy );

$portfolio = new WP_Query('post_type=".$post_type."&post_per_page=-1'); ?>
// First we loop our porfolio_category to show all categories as filter.
<ul id="filters" class="whitetext whitelink myeluft">
    <li><a href="#" data-filter="*" class="selected">All</a></li>
    <?php foreach($terms as $term) : ?>
         <li><a href="#" data-filter=".<?php echo $term->slug ?>"><?php echo $term->name ?></a></li>
    <?php endforeach; ?>
</ul>

<?php if ( $portfolio->have_posts() ) : ?>
                <div id="isotope-list">
                    <?php while ( $portfolio->have_posts() ) : $portfolio->the_post();
// Get current post terms.
                        $item_terms = wp_get_post_terms( get_the_ID(), $post_taxonomy, $args );
                        $classes="";
                        // Append classes to use with each item.
                        foreach($item_terms as $item_term ){
                            $classes .= $item_term->slug.' ';
                        }
                        ?>
                        <div class="<?php echo $classes; ?> item col-md-3">
                            <h3><?php the_title(); ?></h3>
                            <?php if ( has_post_thumbnail() ) {
                                the_post_thumbnail();
                            } ?>
                        </div> <!-- end item -->
                    <?php endwhile;  ?>
                </div> <!-- end isotope-list -->
            <?php endif; ?>

  • Gracias. Creo que estamos metidos en algo aquí. Agregué post_taxonomy a las publicaciones dentro de la publicación personalizada: Foto, y apareció. Usé foto_category como taxonomía. Sin embargo, la lista dentro del foreach que va a mostrar nombres no funciona correctamente. La página se encuentra aquí: goo.gl/jytG7o (Desplácese hacia abajo hasta que vea Siste prosjekt).

    – Olén

    5 de julio de 2015 a las 11:01

  • Lo siento estaba equivocado. Quise decir que usé foto-category como slug y foto como taxonomía.

    – Olén

    5 de julio de 2015 a las 11:16

  • He actualizado la pregunta. Por favor, vea la pregunta original si lo desea.

    – Olén

    5 de julio de 2015 a las 13:33

avatar de usuario
olén

El problema ha sido resuelto.

Finalmente usé el siguiente código:

<ul id="filters" class="whitetext whitelink myeluft">
         <a href="#" data-filter="*" class="selected"><li class="smoothtrans">Alle</li></a>
         <a href="#" data-filter=".foto"><li class="smoothtrans">Foto</li></a>
         <a href="#" data-filter=".video"><li class="smoothtrans">Video</li></a>
         <a href="#" data-filter=".web"><li class="smoothtrans">Web</li></a>
</ul>

<?php
$terms = get_terms( $post_taxonomy );

$args = array(
    'post_type' => 'any',
    'posts_per_page' => 6,
    'post_taxonomy' => 'any',
);

$the_query = new WP_Query($args); 


// Loop post_type
?>

<?php if ( $the_query->have_posts() ) : ?>
    <div id="isotope-list">
        <?php while ( $the_query->have_posts() ) : $the_query->the_post(); 

        $termsArray = get_the_terms( $post->ID, "category");  //Get the terms for this particular item
        $termsString = ""; //initialize the string that will contain the terms
            foreach ( $termsArray as $term ) { // for each term 
                $termsString .= $term->slug.' '; //create a string that has all the slugs 
            }
        ?> 
        <div class="<?php echo $termsString; ?> item col-md-4"> 
            <ul class="grid cs-style-3">
                <li>
                    <figure>
                        <?php // 'item' is used as an identifier (see Setp 5, line 6) ?>
                        <?php if ( has_post_thumbnail() ) { 
                              the_post_thumbnail();
                        } ?>
                        <figcaption class="lefttext">
                            <h3><?php the_title(); ?></h3>
                            <span class="offgrey"><?php echo(types_render_field( "produkt", array( 'raw' => true) )); ?> / <?php echo(types_render_field( "produsert", array( 'raw' => true) )); ?></span>
                            <a href="<?php the_permalink() ?>" rel="bookmark" class="smoothtrans">Se prosjekt</a>
                        </figcaption>
                    </figure>
                </li>
            </ul>             
        </div> <!-- end item -->
        <?php endwhile;  ?>
    </div> <!-- end isotope-list -->
    <script src="<?php bloginfo('stylesheet_directory'); ?>/js/toucheffects.js"></script>
<?php endif; ?>

No hubo muchos cambios que tuve que hacer, pero hubo algunos.

Gracias por todos los que comentaron y vinieron con ideas de trabajo.

Tenga en cuenta que hay algunos errores en el código que aún no he corregido.

avatar de usuario
Alex

los any el argumento es para post_status no creo que sea aceptado para post_type ('post_status' => 'any') (en realidad, no se implementó correctamente en algunas versiones)

Puedes dar tipo de mensaje una matriz con algunos tipos en su lugar:

'post_type' => array('post','page','event')

  • Gracias por comentar Lo he probado, pero parece que no funciona. También traté de reemplazar las matrices con slugs de publicación personalizados, pero tampoco funcionó…

    – Olén

    5 de julio de 2015 a las 10:35

  • luego revise la base de datos y vea qué hace que estas publicaciones sean diferentes (categoría, etc.).

    – Alex

    5 de julio de 2015 a las 10:47

  • He actualizado la pregunta. Por favor, vea la pregunta original si lo desea.

    – Olén

    5 de julio de 2015 a las 13:34

¿Ha sido útil esta solución?