it-swarm.com.de

Wie ist WP_Query mit WP_Post in The Loop verbunden?

Dieser Code funktioniert und ich möchte verstehen, warum.

Also habe ich das Objekt aus der Klasse WP_Query erstellt und die Funktionen have_posts() und the_post() in einer while-Schleife verwendet.

Die Frage ist: Da$post->IDDaten in einem Array sind, das auf der Klasse WP_Post basiert, würde dies bedeuten, dass sich das von der Klasse WP_Post instanziierte Objekt innerhalb des von der Klasse WP_Query instanziierten Objekts befindet.

Kann ein Gegenstand ineinander sein? Oder vermisse ich etwas?

        $the_query = new WP_Query( $args );     
        if ( $the_query->have_posts() ) : ?>
            <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
                <?php echo '<p>' .$post->ID   .'</p>';?>

            <?php endwhile; ?>
            <?php wp_reset_postdata(); ?>       
        <?php else : ?>
            <p>No-data!</p>
        <?php endif; ?>
2
john-thomas

Ja, ein Objekt, das andere Objekte enthält, ist "natürlich". Ein House Objekt enthält ein Array von Furniture Objekten in seiner $furnitures Eigenschaft ... Wie in unserem Fall ... WP_Query enthält ein Array von WP_Post Objekten in seiner $posts Eigenschaft ... A one Beziehung . Dies ist eine Aggregation .

OOP dreht sich alles um die programmatische Modellierung von Dingen. Diese Dinge sind:

  • Aus dem Systemkontext data und process .
  • Aus dem Kontext der realen Welt, Entität und Logik .

Diese beiden Kontexte stehen in Beziehung zueinander. Das data wird durch sein entity und das process durch sein logic definiert. Diese beiden Kontexte können dann in ein gemeinsames Programmiermuster umgewandelt werden - OOP ...

Das WP_Post-Objekt ist eine Entität -Holding und wird durch - seine Daten definiert. Es ist das, was wir ein Domain Model Object nennen. Da es keine Domänenlogik enthält, können Design-Puristen es stattdessen anämisches Domänenmodellobjekt nennen.

Das Objekt WP_Query ist ein process (Dienst). Tatsächlich wird es durch die Domäne logic unseres WP_Post-Objekts definiert, zum Beispiel mit:

$the_query->have_posts();
$the_query->the_post();

Die WP -Schleife selbst durchläuft den WP_Query::$posts und ist für den Kontextwechsel zuständig (das global $post-Objekt).

Aus der Schleife heraus:

  • WP_Query::the_post() initialisiert den global $post. Sie können dann beispielsweise über get_the_ID() oder $post auf die $post->ID-Daten zugreifen.

  • WP_Query::have_posts() prüft, ob es andere WP_Query::$posts gibt, die durchlaufen werden müssen.

5
ClemC