Benutzerdefinierte $ wpdb-Abfrage für benutzerdefinierten Beitragstyp nach Kategorie

Ich verwende den folgenden Code, um eine Liste von Artikeln in meinem benutzerdefinierten Posteingangstyp “Dokumente” nach Jahr und Monat auszugeben.

    get_col("SELECT DISTINCT YEAR(post_date) FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = '".$post_type."' ORDER BY post_date DESC"); foreach($years as $year) : $years_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = '".$post_type."' AND YEAR(post_date) = ".$year.";" ) ); ?>
  • ( Posts)
      get_col("SELECT DISTINCT MONTH(post_date) FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = '".$post_type."' AND YEAR(post_date) = '".$year."' ORDER BY post_date DESC"); foreach($months as $month) : $months_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = '".$post_type."' AND YEAR(post_date) = ".$year." and MONTH(post_date) = ".$month.";" ) ); ?>
    • > <a href="https://wordpress.stackexchange.com/questions/56966/custom-wpdb-query-for-custom-post-type-by-category/"> ( Posts) get_results("SELECT ID, post_title, post_date FROM $wpdb->posts WHERE post_type = '".$post_type."' AND post_status = 'publish' AND YEAR(post_date) = ".$year." and MONTH(post_date) = ".$month.";"); foreach ($theids as $theid): ?>

    • post_title; ?>

Momentan funktioniert das wie erwartet, aber ich habe Probleme, das gleiche für eine bestimmte Kategorie innerhalb meines Dokumentpost-Typs zu tun. Wie würde ich diesen Code für meine Kategorie ‘cascade-campus-docs’ innerhalb meines Posts ‘Dokumente’ verfeinern?

Solutions Collecting From Web of "Benutzerdefinierte $ wpdb-Abfrage für benutzerdefinierten Beitragstyp nach Kategorie"

Verwenden Sie nicht $wpdb , verwenden Sie wp_query . Nicht nur wird Ihr Code schlanker und schneller, Sie werden solche Probleme vermeiden. Sofern Sie nicht etwas mit benutzerdefinierten Tabellen oder ernsthaftem SQL machen, gibt es keinen Grund, direkte SQL-Aufrufe für $wpdb .

Also, um Ihre Frage zu beantworten – schreiben Sie es von Grund auf neu mit wp_query , sehen Sie, dass alles, was Sie tun möchten, im Codex dokumentiert ist, lösen Sie Ihre Probleme ohne Probleme und klopfen Sie sich auf die Rückseite, eine gute Arbeit.

Danke SickHippie.

Das ist, womit ich endete:

 < ?php $args = array( 'posts_per_page' => -1, 'post_type' => 'documents', 'post_status' => 'publish', 'tax_query' => array( array( 'taxonomy' => 'download-category', 'field' => 'slug', 'terms' => 'cascade-campus-docs' ) ) ); $my_query = null; $my_query = new WP_Query($args); ?> < ?php if( $my_query->have_posts() ) { while ($my_query->have_posts()) : $my_query->the_post(); ?> < ?php $year = get_the_date('Y', '', '', FALSE); if ($year !== $year_check) { echo "

" . $year . ""; } $year_check = $year; ?> < ?php the_date('F', '

', ''); ?>

< ?php the_title(); ?>

< ?php endwhile; } wp_reset_query(); ?>

Ich habe die letzte Woche gesucht, aber nichts gefunden. Hoffentlich hat diese Abfrage nur bestimmte Kategorie-Posts angezeigt:

 < ?php $years = $wpdb->get_col("SELECT DISTINCT YEAR(post_date) FROM $wpdb->posts INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id AND $wpdb->term_taxonomy.taxonomy='category') INNER JOIN $wpdb->terms ON ($wpdb->terms.term_id = $wpdb->term_taxonomy.term_id) WHERE $wpdb->terms.slug='blog' ORDER BY post_date DESC"); foreach($years as $year) : ?> 
  • < ?php echo $year; ?>
      < ? $months = $wpdb->get_col("SELECT DISTINCT MONTH(post_date) FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' AND YEAR(post_date) = '".$year."' ORDER BY post_date DESC"); foreach($months as $month) : ?>
    • < ?php echo date( 'F', mktime(0, 0, 0, $month) );?>
    • < ?php endforeach;?>
  • < ?php endforeach; ?>