it-swarm.com.de

verwenden Sie query_posts, um einen Beitrag zurückzugeben OR eine Seite von ID

Ich erstelle eine benutzerdefinierte Homepage für einen Kunden, auf der ein paar veränderbare Felder vorhanden sein sollen, um auf bestimmte Seiten oder Beiträge innerhalb der Site zu verweisen. Ich habe der Startseite benutzerdefinierte Felder hinzugefügt, sodass sie nur die Seiten-/Beitrags-ID eingeben müssen. Anschließend wird der entsprechende Beitrag oder die entsprechende Seite angezeigt. Und ich möchte, dass es flexibel genug ist, um einen Beitrag oder eine Seite zu erstellen.

Im Moment ist mein Code für die Box

<?php query_posts('p='.$topright); ?>
<?php while (have_posts()) : the_post(); ?>
     {title and featured image}
<?php endwhile; ?>

dabei ist $ topright eine bereits definierte Variable. (Ich habe die Variable mit einem Echo getestet und sie gibt die richtige ID-Nummer zurück.)

Leider scheint WordPress zu verlangen, dass ich p = ID verwende, wenn es sich um einen Beitrag handelt, und page_id = ID, wenn es sich um eine Seite handelt. Wenn ich also die ID für einen Beitrag bezeichne, funktioniert dies einwandfrei, aber nicht, wenn ich die ID für eine Seite bezeichne. Gibt es eine alternative Syntax, die ich verwenden könnte? Oder gibt es eine Bedingung irgendeiner Art, die eine ID anzeigt und erkennt, ob es sich um einen Beitrag oder eine Seite handelt, damit ich die Abfrage mit einem IF ELSE ausführen kann?

1
John Chandler

Versuche dies:

query_posts(array(
    'p' => $topright,
    'post_type' => array('post', 'page'),
));
5
Rarst

sie können 'post__in' in Ihrer Abfrage verwenden. Wenn Sie eine benutzerdefinierte Abfrage erstellen, sollten Sie WP_Query oder get_posts und nicht query_posts verwenden.

$my_query = new WP_Query();
$my_query->query(array( 'post__in' => array($topright)));
while ($my_query->have_posts()) : $my_query->the_post(); ?>
     {title and featured image}
<?php endwhile; ?>

Hoffe das hilft

2
Bainternet