Get_the_terms – zeigt alle Beitragstypen an

Lesezeit: 9 Minuten

Olens Benutzeravatar
Olen

Die Frage wurde aktualisiert. Siehe unten für die neueste Version

Ich habe Probleme, alle Beitragstypen zu sehen, wenn ich benutzerdefinierte Beiträge verwende. Dies basiert auf Isotopen, und der Benutzer soll auf die Links klicken, um Beiträge in dieser Kategorie anzuzeigen.

Alle Posts, die von WordPress-Standardposts erstellt wurden, werden angezeigt, aber keine, die mit Types (Custom Posts) erstellt wurden.

<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; ?>

Wie Sie sehen, habe ich versucht, das Problem durch Einfügen des folgenden Codes zu beheben, aber es werden immer noch nicht alle Beitragstypen angezeigt.

// 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

ich habe gelesen Dieser Artikelaber ich fand mich selbst mehr verloren als angefangen /

Was wäre eine funktionierende Lösung?

Aktualisieren

Durch die Verwendung des folgenden Codes kann ich alle Beiträge sehen, aber nicht herausfiltern. Siehe Seite hier: http://goo.gl/e3cLuM (scrollen Sie nach unten, bis Sie alle Beiträge sehen)

<?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; ?>

  • Verwenden Sie eine benutzerdefinierte Taxonomie für Ihren benutzerdefinierten Beitragstyp?

    – Touqeer Shafi

    5. Juli 2015 um 10:24 Uhr

  • Danke für die Antwort. Das ist ein Nachteil, aber es wäre eine Möglichkeit, Taxonomie hinzuzufügen, wenn es notwendig ist, damit es funktioniert.

    – Olen

    5. Juli 2015 um 10:28 Uhr

  • Haben Sie versucht, array(‘posts_per_page’=>50,’post_type’=>any) für die WP_Query

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

    5. Juli 2015 um 10:30 Uhr

  • Ich glaube, dass irgendwo in diesem Code ein Syntaxfehler ist. Zumindest hat es nicht funktioniert.

    – Olen

    5. Juli 2015 um 10:39 Uhr

  • Auf welcher Vorlage genau steht das

    – Pieter Goosen

    5. Juli 2015 um 10:41 Uhr

Angenommen, wir haben einen benutzerdefinierten Beitragstyp namens portfolio und benutzerdefinierte Taxonomie genannt 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; ?>

  • Vielen Dank. Ich glaube, wir sind hier in etwas. Ich habe post_taxonomy zu den Posts innerhalb des benutzerdefinierten Posts hinzugefügt: Foto, und es wurde angezeigt. Ich habe foto_category als Taxonomie verwendet. Aber die Liste innerhalb von foreach, die Namen anzeigen soll, funktioniert nicht richtig. Die Seite ist hier zu finden: goo.gl/jytG7o (Scrollen Sie nach unten, bis Sie Siste prosjekt sehen).

    – Olen

    5. Juli 2015 um 11:01 Uhr

  • Tut mir leid ich lag falsch. Ich meinte, ich habe Foto-Kategorie als Slug und Foto als Taxonomie verwendet.

    – Olen

    5. Juli 2015 um 11:16 Uhr

  • Ich habe die Frage aktualisiert. Bitte sehen Sie sich die ursprüngliche Frage an, wenn Sie möchten.

    – Olen

    5. Juli 2015 um 13:33 Uhr

Olens Benutzeravatar
Olen

Das Problem ist gelöst worden.

Ich habe schließlich den folgenden Code verwendet:

<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; ?>

Es gab nicht so viele Änderungen, die ich vornehmen musste, aber es gab ein paar.

Vielen Dank für alle, die kommentiert und mit Arbeitsideen gekommen sind.

Beachten Sie, dass es einige Fehler im Code gibt, die ich noch nicht behoben habe.

Benutzeravatar von Alex
Alex

Das any Argument ist für post_status Ich glaube nicht, dass es akzeptiert wird post_type ('post_status' => 'any') (eigentlich war es in einigen Versionen nicht richtig implementiert)

Du kannst Geben Post-Typ stattdessen ein Array mit einigen Typen:

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

  • Vielen Dank für Ihren Kommentar. Ich habe es getestet, aber es schien nicht zu funktionieren. Ich habe auch versucht, die Arrays durch benutzerdefinierte Post-Slugs zu ersetzen, aber das hat auch nicht funktioniert …

    – Olen

    5. Juli 2015 um 10:35 Uhr

  • Überprüfen Sie dann die Datenbank und sehen Sie, was diese Beiträge anders macht (Kategorie usw.).

    – Alex

    5. Juli 2015 um 10:47 Uhr

  • Ich habe die Frage aktualisiert. Bitte sehen Sie sich die ursprüngliche Frage an, wenn Sie möchten.

    – Olen

    5. Juli 2015 um 13:34 Uhr

1401780cookie-checkGet_the_terms – zeigt alle Beitragstypen an

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy