it-swarm.com.de

Aktuelle Seiten-ID dynamisch ausschließen

Ich versuche, mithilfe von query_posts einen Abschnitt "Verwandte Posts" auf Seiten zu erstellen. Ich möchte dies einfach verwenden, weil wir zufällige Beiträge aus einer Kategorie auf einer Seite anzeigen möchten, sodass ein Plug-in überflüssig wäre.

Das Problem besteht darin, die aktuelle Seite, auf der sich der Benutzer befindet, dynamisch aus der Liste auszuschließen. Hier ist der Code, den ich verwende, und ich habe verschiedene Methoden versucht, um die aktuelle Seite auszuschließen, aber keine hat funktioniert.

<?php

// The Query
$post_id = get_the_ID();
query_posts("showposts=4&post_type=page&post_parent=168&orderby=Rand&exclude='. $post_id .'");

// The Loop
while ( have_posts() ) : the_post();
echo '<li><a href="'. get_permalink() .'">';
the_title();
echo '</a></li>';
endwhile;

// Reset Query
wp_reset_query();

?>

Mache ich das falsch oder verwende ich den falschen Code oder beides?

TIA!

On Edit:

Nach Milos Vorschlag habe ich noch einmal nachgesehen und mit seiner Antwort und einem Beitrag im WP Forum kombiniert. Ich habe es so gemacht, dass es mit Folgendem funktioniert (scheint, dass 'ausschließen' nicht dafür funktionieren wollte). :

<?php
    $this_post = $post->ID;
    global $post;
    $args= array(
        'post_type' => 'page',
        'posts_per_page' => 4,
        'post_parent' => 168,
        'orderby' => 'Rand',
        'post__not_in' => array($this_post)
     );
$rel_posts = get_posts($args);
foreach($rel_posts as $post) :
setup_postdata($post);
?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
2

Wenn in Ihrem Code $post_id beispielsweise 99 wäre, ist dies:

query_posts("showposts=4&post_type=page&post_parent=168&orderby=Rand&exclude='. $post_id .'");

würde dazu führen, dass Folgendes an Abfrage-Posts übergeben wird:

query_posts("showposts=4&post_type=page&post_parent=168&orderby=Rand&exclude='. 99 .'");

daher lautet Ihr Problem hier: '. 99 .' ist kein gültiger Wert für exclude.

Allerdings sollte query_posts nur verwendet werden, um die Hauptschleife in einer Vorlage zu ändern. Wenn Sie zusätzliche Abfragen durchführen möchten, sollten Sie eine neue WP_Query -Instanz erstellen.

$args = array(
    'post_type' => 'page',
    'posts_per_page' => 4,
    'post_parent' => 168,
    'orderby' => 'Rand',
    'exclude' => $post_id
);

$related_posts = new WP_Query( $args );

while( $related_posts->have_posts() ):
    $related_posts->the_post();
    // loop stuff
endwhile;
4
Milo