SQL wpdb Kategorie ausblenden

  • Hallo zusammen,
    folgenden Code verwende ich zum Aufbau eines nach Monaten sortierten Archivs. Den Code habe ich im Internet gefunden. Ich würde allerdings gerne im Archiv eine Kategorie (Bilder id=3) ausblenden bzw. nur die Posts der Kategorien mit ID = 1,2,4 anzeigen lassen.

    Von php und SQL-Abfragen habe ich leider wenig Ahnung. Ich hab auch schon im Internet gesucht um die SQL Abfrage in der ersten Zeile zu ändern, aber leider erfolglos.

    Vielleicht findet sich ja hier jemand der sich damit auskennt.

    Schon mal vielen Dank im voraus.

    PS. Das ist mein Erster Post hier. Ich hoffe ich habe alles richtig gemacht.?

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • irrtümlicher Doppelpost daher hier closed!


    Edit von Maxe: Und ich Depp, hatte den anderen Thread gelöscht 8-) Von daher hier wieder auf :oops:
    Sorry Monika!


  • Den Code habe ich im Internet gefunden.

    Quelle? Zusammenhang?



    Ich würde allerdings gerne im Archiv eine Kategorie (Bilder id=3) ausblenden bzw. nur die Posts der Kategorien mit ID = 1,2,4 anzeigen lassen.

    o.k.

    PHP
    $months = $wpdb->get_results("SELECT DISTINCT MONTH(post_date) AS month , YEAR(post_date) AS year FROM $wpdb->posts WHERE post_status = 'publish' and post_date <= now( ) and post_type = 'post' GROUP BY month, year ORDER BY post_date DESC");
    PHP
    $posts = $wpdb->get_results("SELECT id, post_title, MONTH(post_date) AS month , YEAR(post_date) AS year FROM $wpdb->posts WHERE post_status = 'publish' and post_type = 'post'  ORDER BY post_date DESC");

    ^- warum machst du zwei Datenbank Abfragen?

    PHP
    <h2 class="post-title"><?php setlocale(LC_TIME, "de_DE.utf8"); echo strftime("%B", mktime(0, 0, 0, $this_month->month, 1, $this_month->year)) ?> <?php echo $this_month->year; ?></h2> <!--//Monat in Deutsch-->


    ^- Willst du also eine Ausgabe wie Sonntag, 28. März 2006, 0:53 Uhr, benutze folgenden Code:
    [code=php]<?php the_time('l, j. F Y, G:i Uhr') ?>

    Zitat von den FAQs
    https://de.forums.wordpress.org/topic/wie-stel…datumsformat-um


    PHP
    <?php if(($this_month->year == $posts[$i]->year)&&($this_month->month == $posts[$i]->month)){?>

    wenn du ein "Archives by Month" verwenden möchtst, steht dir

    PHP
    <?php wp_get_archives('type=monthly'); ?>

    zur Verfügung
    https://codex.wordpress.org/Creating_an_Archive_Index


    Wenn ich Kategorien ausklammern oder nur bestimtme Kategorien anzeigen möchte - verwende ich gerne
    https://wordpress.org/plugins/list-c…ts/other_notes/

    oder die Datenbankabfragen daraus.


    WordPress selber prüft und umschreibt Datenbankabfragen. Vor diesem Hintergrund zeichne ich in meiner Entwicklungsumgebung Datenbankabfragen auf und verwende diese dann.

    Der Query für "nur die Posts der Kategorien mit ID = 1,2,4" sieht so aus =>

    PHP
    SELECT SQL_CALC_FOUND_ROWS mywp_posts.ID 
    FROM mywp_posts INNER JOIN mywp_term_relationships ON (mywp_posts.ID = mywp_term_relationships.object_id) 
    WHERE 1=1 AND ( mywp_term_relationships.term_taxonomy_id IN (1,2,4) ) 
    AND mywp_posts.post_type = 'post' 
    AND ((mywp_posts.post_status = 'publish' OR mywp_posts.post_status = 'private')) 
    GROUP BY mywp_posts.ID 
    ORDER BY mywp_posts.post_date DESC LIMIT 0, 10


    Mit einem SQL Editor Heidi SQL http://www.heidisql.com/ an die gewünschte Ergebnisse anpassen (zum Beispiel keine 'private') anzeigen ... und selbstverständlich mywp durch den richtigen Datenbank-Prefix ersetzten.

    Hoffe es hilft weiter.

    Ralf

    Mit offenen Augen träumen

    Einmal editiert, zuletzt von r23 (28. Februar 2016 um 15:11)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!