Support » Allgemeine Fragen » SQL Befehlt um Posts bestimmen Kategorieren auszulesen

  • Hallo zusammen,

    ich habe einen WordPress Blog in dem ich Beiträge für unterschiedliche Kategorien haben möchte. Auf meiner Haupt-Webseite (außerhalb von WordPress), lasse ich aktuell mit folgendem SQL Befehl die letzten 3 Blog Einträge anzeigen:

    SELECT * FROMwp_postsWHEREpost_status= "publish" &&comment_status= "open" &&ping_status= "open" ORDER BYpost_dateDESC LIMIT 0,3

    Jetzt möchte ich aber gerne nur die Posts haben, welcher Kategorie „XYZ“ zugehören. Wie müsste mein SQL Befehl dafür aussehen?

    Vielen Dank 🙂

Ansicht von 10 Antworten - 1 bis 10 (von insgesamt 10)
  • Hallo.

    Als erstes empfehle ich dir die Hausmittel von WP zu benutzen.

    als Einstiegshilfe hier eine Grafik:
    https://developer.wordpress.org/reference/functions/query_posts/#more-information

    In den wp_query brauchts du dann ganz einfach die gewünschte Cat angeben, siehe:
    https://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters

    Den SQL-Befehl müsste ich jetzt selber erstmal zusammenbasteln. Aber wieso nimmst du nicht die Funktionen, dir WordPress dir zur Verfügung stellt? Das ist einfacher und sicherer.

    Mit dem Query Generator kannst du dafür ganz flott eine Abfrage erstellen:

    // WP_Query arguments
    $args = array(
    	'post_type'              => array( 'post' ),
    	'post_status'            => array( 'published' ),
    	'posts_per_page'         => '3',
            'cat'                    => '2,6,17,38'
    );
    
    // The Query
    $query = new WP_Query( $args );
    
    // The Loop
    if ( $query->have_posts() ) {
    	while ( $query->have_posts() ) {
    		$query->the_post();
    		// do something
    	}
    } else {
    	// no posts found
    }
    
    // Restore original Post Data
    wp_reset_postdata();

    Mehr Infos zum Objekt WP_Query() und den Kategorie-Parametern findest du hier:
    https://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters

    PS: Diesmal ist mir Espiat zuvor gekommen, während ich noch die Links zusammengesucht habe. Seine Antwort geht in die gleiche Richtung und ist genauso richtig.

    • Diese Antwort wurde geändert vor 6 Jahren, 4 Monaten von Bego Mario Garde. Grund: Nachtrag: Espiat war schneller
    Thread-Starter undusted1364

    (@ghost108)

    vielleicht versteh ich oder Ihr es falsch – deswegen noch mal genauer ^^
    Die BLog-Einträge möchte ich gerne auf einer Webseite anzeigen lassen, welche mit WordPress überhaupt nix zu tun hat.

    Die Webseite ist mit PHP aufgebaut, baut eine Verbindung zur Datenbank von WordPress auf und liest via SQL den Post aus.

    WP_Query kann ich ja nur innerhalb von WordPress nutzen, oder nicht?

    WP_Query kann ich ja nur innerhalb von WordPress nutzen, oder nicht?

    Nicht. 🙂

    require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
    Damit solltest du dann auch die WP-Query nutzen können.

    Direkte Abfragen per SQL-Statement sind unsicherer.

    Thread-Starter undusted1364

    (@ghost108)

    ahh okay, habe die wp-load.php nun eingebunden und deinen Code verwendet.
    // do something noch etwas machen muss, damit die Abfrage auch ausgeben wird, denn aktuell gibt mir das Resultat nicht zurück. Wie müsste ich deinen Code noch weiter anpassen?

    Anstelle // do something

    zum Beispiel:

    <?php the_title(); ?>

    Kommt jetzt ganz drauf an, welche Daten du da ausgeben möchtest.

    Thread-Starter undusted1364

    (@ghost108)

    Titel und den eigentlich text.
    gibt es eine Liste mit den Klassen?
    Weil ich stelle mir die Frage, woher soll ich wissen das es the_title() gibt 🙂

    Thread-Starter undusted1364

    (@ghost108)

    Vielen Dank 🙂
    habe es mit dem Code realisiert:

    // WP_Query arguments
    $args = array(
    	'page_id'				=> '2',
    	'post_type'        		=> array( 'page' ),
    	'order'                  	=> 'DESC',
    	'orderby'               	=> 'date',
    );
    
    // The Query
    $query = new WP_Query( $args );
    
    // The Loop
    if ( $query->have_posts() ) {
    	while ( $query->have_posts() ) {
    		$query->the_post();
    		echo get_the_content();
    	}
    }
    
    // Restore original Post Data
    wp_reset_postdata();
    • Diese Antwort wurde geändert vor 6 Jahren, 4 Monaten von undusted1364.
    • Diese Antwort wurde geändert vor 6 Jahren, 4 Monaten von undusted1364.

    Mit Shortinit könnte man das noch bechleunigen, wenn ich mich nicht irre. Wenn du nur die Daten willst, musst du ja nicht WordPress komplett laden lassen:

    http://kynatro.com/blog/2012/12/11/finally-a-practical-use-for-wordpress-secret-shortinit-constant/

    Gruß, Torsten

Ansicht von 10 Antworten - 1 bis 10 (von insgesamt 10)
  • Das Thema „SQL Befehlt um Posts bestimmen Kategorieren auszulesen“ ist für neue Antworten geschlossen.