WP_Query zum Anzeigen von Beiträgen nach Kategorie in WordPress (in benutzerdefinierten Beitragstypen)

Lesezeit: 1 Minute

Benutzer-Avatar
Baki

Hej, ich mache es kurz. Ich möchte dies in einer WP-Schleife ausgeben:

Support
    Category1
      -Post1
      -Post2
    Category2
      -PostA
      -PostB
      -PostC

Ich möchte also Posts nach Kategorie sortieren, die sich in einem benutzerdefinierten Post-Typ befinden – support (erstellt dank Types-Plugin, Link: ujeb.se/A4zqZ ).

Ich habe das:

<?php
$args = array('post_type' => 'support');
$query = new WP_Query($args);

while($query -> have_posts()) : $query -> the_post(); ?>

    <p><?php the_category(); ?></p>
    <h2><a href="https://stackoverflow.com/questions/31973457/<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
    <p><?php the_content(); ?></p>

<?php endwhile; ?>

Mein $query speichert alle notwendigen Beiträge aus meinem benutzerdefinierten Beitragstyp (support), aber ich habe ein Problem damit, sie nach Kategorie anzuzeigen. Ich glaube, ich brauche eine Art von foreach aber ich kann es nicht wirklich nachvollziehen. Irgendwelche Vorschläge?

/bearbeiten/
Die aktuelle Anzeige sieht so aus:

Support, Category1
Post1
---
Support, Category2
PostA
---
Support, Category1
Post2

etc.

  • Versuchen Sie zu ersetzen while($query -> have_posts()) : $query -> the_post(); ?> mit <?php if (have_posts()) : ?>. Verwenden Sie auch anstelle von endwhile endif. In Ihren $args benötigen Sie so etwas wie 'orderby' => array( 'postcol' => 'DESC', 'categorycol' => 'DESC' )

    – Mihai

    12. August 2015 um 20:08 Uhr


  • Danke für den Versuch, aber das ändern while Schleife zu einem if ändert die Ausgabe auf Support :<

    – Baki

    12. August 2015 um 20:48 Uhr

Benutzer-Avatar
Holzhack

Hier ist, wie Sie es tun. Sie brauchten eine foreach-Schleife, um durch die Kategorien zu blättern.

<?php
$cats = get_categories();

foreach ($cats as $cat) {
$args = array(
'post_type' => 'support',
'tax_query' => array(
    array(
        'taxonomy' => 'category',
        'field'    => 'term_id',
        'terms'    => $cat->cat_ID,
        ),
    ),
);
$query = new WP_Query($args);

if ( $query->have_posts() ): ?>
    <p><?php echo $cat->cat_name ; ?></p> <?

   while($query -> have_posts()) : $query -> the_post(); ?>
      <h2><a href="https://stackoverflow.com/questions/31973457/<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
      <p><?php the_content(); ?></p> <?php
   endwhile;
endif; 

// Added this now 
wp_reset_query() ; 
}

  • Leider funktioniert das nicht 🙁 Es bekommt alle Kategorien und ignoriert die support Beitragstyp, damit ich auch nicht verwandte Beiträge/Kategorien erhalte.

    – Baki

    13. August 2015 um 17:24 Uhr

  • Hmm, wie komme ich dazu, die Abfrage zurückzusetzen? Ich habe versucht zu setzen wp_reset_query(); an einigen Stellen hat sich aber nichts wirklich geändert. Ich habe mir genauer angeschaut, was tatsächlich ausgegeben wird und bekomme alle Kategorien, die ich habe (die von support und die nicht verwandten) und jeder von ihnen hat die gleiche Gruppe von Beiträgen, nämlich die support Beiträge.

    – Baki

    13. August 2015 um 19:01 Uhr

  • usort() + the_posts Filter. Suche mein Profil, ich habe kürzlich etwas Ähnliches gemacht 😉

    – Pieter Goosen

    13. August 2015 um 19:15 Uhr

  • Funktioniert, danke! Eine kurze Folgefrage (obwohl ich das wahrscheinlich selbst herausfinden kann): Wie schließe ich eine Kategorie aus? Ich habe versucht hinzuzufügen 'cat' => '-excludeme', zum Array, aber es hat nicht funktioniert.

    – Baki

    13. August 2015 um 21:10 Uhr

  • Fügen Sie den Bedienerschlüssel einfach so zu der hinzu $args als weiterer Param array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => array( 103, 115, 206 ), 'operator' => 'NOT IN', ),

    – Holzhack

    13. August 2015 um 21:36 Uhr

diese arbeit für mich:

   $posts = new WP_Query(array(
        'category_name' => 'news,
        'post_status' => 'publish',
        'post_type' => 'post',
        'posts_per_page' => 6,
        ));

1383560cookie-checkWP_Query zum Anzeigen von Beiträgen nach Kategorie in WordPress (in benutzerdefinierten Beitragstypen)

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

Privacy policy