Wie zeige ich Seiteninhalte in einer Seitenvorlage an?
-
-
Worinbesteht das Problem?Diesisteine Seitenvorlage,sodass Sie Zugriff auf den Seiteninhalt haben.Übereine weitere separate Abfrageerhalten Siebeispielsweise Zugriff aufeinen bestimmten Beitrag und können so dessen Inhalt ausgeben.Damit?What is the problem? This is a page template, so you have access to the page content. By means of another separate query you gain access to a specific post, for instance, and thus can output its content. So?
- 2
- 2013-03-11
- tfrommen
-
Bitte haben Sieetwas Geduld,bevor Sie abstimmen.Ich kämpfe darum und dann habeich die Lösunggefunden.Ich habe hier versucht,Fragen und Antworten zugeben,um die Logikmit anderen zuteilen. Ich denke,dies wird die Tatsache aufeine Weise verdeutlichen,nach derich suche.Hoffe,die Fragen und Antworten sind Ihnen klar.Please be patient before voting down. I's struggling for it and then I found the solution. I tried to Q&A here to share the logic with others - I think it will clarify the fact in a way I's looking for it. Hope the Q & A is clear to you.
- 0
- 2013-03-11
- Mayeenul Islam
-
Erstens habeich Ihre Fragenicht abgelehnt.Zweitens,danke,dass Sie Ihr Wissenmit unsteilen.Sie haben absolut Recht dazu.Ich denke,das Problemist/war,dass diese Fragefürerfahrene WP-Benutzer/Entwicklernicht so schwer zu lösen war,sowie die Tatsache,dass Sie die Frage alleinegestellt haben.Wenn Sie von Anfang an Fragen und Antworten stellenmöchten,fügen Sie Ihre Antwort/Lösung direkt auf derselben Seiteein,auf der Sie Ihre Frage schreiben.Unter der Schaltfläche _Post Your Question_befindet sichein Kontrollkästchen ** Beantworten Sie Ihreeigene Frage **.Dankenocheinmal.Firstly, I did **not** downvote your question. Secondly, thanks for sharing your knowledge with us. You're absolutely right to do so. I guess, the problem is/was that this _question_ was not that hard to solve for experienced WP users/developers, as well as the fact that you posted the question alone. If you want to question & answer right from the start, just include your answer/solution directly on the same page that you write your question on. Below the _Post Your Question_ button there is a check box **Answer your own question**. Thanks again.
- 0
- 2013-03-11
- tfrommen
-
`wp_reset_postdata ()` zur Rettung.Solltenachjederbenutzerdefinierten Abfrageerfolgen.`wp_reset_postdata()` for the rescue. Should be done _after each custom query_.
- 0
- 2013-03-11
- kaiser
-
2 Antworten
- Stimmen
-
- 2013-03-11
Ich verwende zwei Schleifen. Dieerste Schleife dient zum Anzeigen des Seiteninhalts und die zweite Schleife zum Anzeigen des abgefragten Beitragsinhalts. Ich habe die Codesbei Bedarf kommentiert. Ich habein den Schleifenbetont,wie Deckster0 in der WordPress-Unterstützung ,dass
the_content()
nurinnerhalbeiner WordPress-Schleifefunktioniert. Ichplatziere diesen Codein einereigenen Vorlage:<?php /* * Template Name: My Template */ get_header(); ?> <div id="container"> <div id="content" class="pageContent"> <h1 class="entry-title"><?php the_title(); ?></h1> <!-- Page Title --> <?php // TO SHOW THE PAGE CONTENTS while ( have_posts() ) : the_post(); ?> <!--Because the_content() works only inside a WP Loop --> <div class="entry-content-page"> <?php the_content(); ?> <!-- Page Content --> </div><!-- .entry-content-page --> <?php endwhile; //resetting the page loop wp_reset_query(); //resetting the page query ?> <?php // TO SHOW THE POST CONTENTS ?> <?php $my_query = new WP_Query( 'cat=1' ); // I used a category id 1 as an example ?> <?php if ( $my_query->have_posts() ) : ?> <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <?php while ($my_query->have_posts()) : $my_query->the_post(); ?> <h1 class="entry-title"><?php the_title(); ?></h1> <!-- Queried Post Title --> <div class="entry-content"> <?php the_excerpt(); ?> <!-- Queried Post Excerpts --> </div><!-- .entry-content --> <?php endwhile; //resetting the post loop ?> </div><!-- #post-<?php the_ID(); ?> --> <?php wp_reset_postdata(); //resetting the post query endif; ?> </div><!-- #content --> </div><!-- #container -->
I'm using two loops. First loop is to show the page content, and the second loop is to show the queried post contents. I commented into the codes where necessary. I emphasized into the loops, as Deckster0 said in WordPress support that,
the_content()
works only inside a WordPress Loop. I'm placing these code into a my own template:<?php /* * Template Name: My Template */ get_header(); ?> <div id="container"> <div id="content" class="pageContent"> <h1 class="entry-title"><?php the_title(); ?></h1> <!-- Page Title --> <?php // TO SHOW THE PAGE CONTENTS while ( have_posts() ) : the_post(); ?> <!--Because the_content() works only inside a WP Loop --> <div class="entry-content-page"> <?php the_content(); ?> <!-- Page Content --> </div><!-- .entry-content-page --> <?php endwhile; //resetting the page loop wp_reset_query(); //resetting the page query ?> <?php // TO SHOW THE POST CONTENTS ?> <?php $my_query = new WP_Query( 'cat=1' ); // I used a category id 1 as an example ?> <?php if ( $my_query->have_posts() ) : ?> <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <?php while ($my_query->have_posts()) : $my_query->the_post(); ?> <h1 class="entry-title"><?php the_title(); ?></h1> <!-- Queried Post Title --> <div class="entry-content"> <?php the_excerpt(); ?> <!-- Queried Post Excerpts --> </div><!-- .entry-content --> <?php endwhile; //resetting the post loop ?> </div><!-- #post-<?php the_ID(); ?> --> <?php wp_reset_postdata(); //resetting the post query endif; ?> </div><!-- #content --> </div><!-- #container -->
-
Diese zweite Abfrage sollte sichnichtin "if (have_posts ())"befinden,da diese Anweisungimmer wahrist.Sie sollten "if ($my_query-> have_posts ())"nach "$my_query=new WP_Query (" cat=1 ");" und args-Zeilen aufrufen,wenn Sie überprüfenmöchten,ob die Abfrage Ergebnisse hat.That second query shouldn't be inside `if( have_posts() )` because that statement will always be true. You should call `if( $my_query->have_posts() )` after the `$my_query = new WP_Query( 'cat=1' );` and args lines if you want to check that query has results.
- 0
- 2013-04-12
- t31os
-
@t31os du hast recht.Esistmeine Schuld.Korrigiertenun den Code auf solche.Dankefür die Identifizierung.:) :)@t31os you are right. It's my fault. Now corrected the code to such. Thanks for the identification. :)
- 0
- 2014-05-28
- Mayeenul Islam
-
- 2013-03-11
Zwei Schleifen sind üblich,aberetwas überdosiert.
Jeder Beitrag oderjede Seitegibt Ihnen die Supervariable
$post
.Haben Sie sichjemalsgefragt,warum Ihrget_post_meta()
mit einereinfachen$post->ID
;)funktioniert?Bevor Sie also WP_Query () starten,mit dem Ihre aufgelisteten Beiträge abgerufen werden,können Siemit
$post->ID
,$post->post_content
,$post->guid
und so weiter.In der Schleife wird diese Variable durch dengeloopten Beitraggefüllt.Umesfür später zu speichern,können Sieentwedereine neue Variable
erstellen$temp_post = $post // new WP_Query() + loop here
oder rufen Sie
anwp_reset_query ()
nach der Auflistung.Die letzte Funktion solltetrotzdem aufgerufen werden,um sicherzustellen,dass die Datenin Ihrer Seitenleistefür die aktuelle Seite/den aktuellen Beitrag richtig sind.
Two loops is common to do this, but a bit overdosed.
Every post or page gives you the super-variable
$post
. Ever wondered why yourget_post_meta()
works with a simple$post->ID
;) ?So, before you start the WP_Query() that gets your listed posts, you can access the current page-/post-data with
$post->ID
,$post->post_content
,$post->guid
and so on.In the loop, this variable gets filled by the looped post. To save it for later, you can either make a new variable
$temp_post = $post // new WP_Query() + loop here
or call
wp_reset_query()
after the listing. The last function should be called anyway to ensure that the data in your sidebar is the right for the current page/post.
Aufmeiner WordPress-Site habeicheine benutzerdefinierte Seitenvorlageerstellt,dieeine benutzerdefinierte Abfrageenthielt [mit
WP_Query()
].Mit dieser Abfrage kannich die Beiträgeeinerbestimmten Kategorieperfekt abrufen.Ichmöchtejedoch den Seiteninhalt zusammenmit den abgefragten Beiträgen anzeigen.Die Sache wird wiefolgt aussehen:
---------------------------
Seitenüberschrift
Seiteninhalt
Abgefragte Postüberschrift
abgefragter Beitragsinhalt
---------------------------