Erhalten Sie zufällige Beiträge in WordPress

Lesezeit: 6 Minuten

Erhalten Sie zufallige Beitrage in Wordpress
rlab

Wie erhalte ich einen zufälligen Beitrag in WordPress?

Ich möchte eine Schaltfläche auf einer Seite anzeigen, die, wenn sie gedrückt wird, zu einem zufälligen Beitrag aus dem Blog führt. Ich möchte nicht, dass ein zufälliger Beitrag auf der Seite angezeigt wird, ich möchte nur einen Link, der zu diesem Beitrag führt. Ich habe versucht, bei Google und hier bei Stackoverflow nach einem Code zu suchen, aber ohne Erfolg.

Danke…

AKTUALISIEREN:

Hier ist mein Vorlagencode:

<?php /*Template Name: Random*/ ?>

<?php get_header(); ?>

<nav><?php wp_nav_menu(array('menu' => 'Main Nav Menu')); ?></nav>

<div id="main-content-archive">

<div class="grey-text">Random post</div>

        <?php $query = new WP_Query( array ( 'orderby' => 'rand', 'posts_per_page' => '1' ) );?>

        <?php if (have_posts()) : while ( $the_query->have_posts() ) : $the_query->the_post();
        echo '<li>';
        the_title();
        echo '</li>';
        ?>

<?php endwhile; ?>

<?php else : ?>

    <h2>Not Found</h2>

<?php endif; ?> 

</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

  • Vielleicht könnte dir das helfen: Zufälliges Post-Plugin

    – Zykloncode

    29. Dezember 2011 um 19:22 Uhr

  • Danke, aber ich hatte auf einen einfachen Code gehofft. Dieses Plugin erlaubt keine Anpassung des Links in dem Sinne, dass ich die Liste der letzten Beiträge durch eine Schaltfläche ersetzen kann. Irgendeine andere Idee?

    – rlab

    29. Dezember 2011 um 19:44 Uhr

  • @rlesko a) nicht Verwenden Sie Variablen, die leicht durch den Kern globalisiert werden könnten – verwenden Sie nicht “$query“, “$post” usw… Verwenden Sie stattdessen zB $myQuery oder etwas ähnliches…

    – jave.web

    31. Januar 2017 um 17:40 Uhr


  • @rlesko b) Sie haben die Benennung verbuggt – du stellst “$query“Variable, obwohl Sie fragen if(have_posts()) – das ist die MAIN-Abfrage, die Sie haben sollten if($myQuery->have_posts())das gleiche gilt für den Rest von ->have_posts() und ->the_post()ehrlich gesagt bin ich überrascht, dass Ihr Code keinen Fehler auf Ihren Kopf geworfen hat 🙂

    – jave.web

    31. Januar 2017 um 17:42 Uhr


Erhalten Sie zufallige Beitrage in Wordpress
bingjie2680

Erstellen Sie eine Seitenvorlage und verwenden Sie den folgenden Code, um einen zufälligen Beitrag zu erhalten:

//Create WordPress Query with 'orderby' set to 'rand' (Random)
$the_query = new WP_Query( array ( 'orderby' => 'rand', 'posts_per_page' => '1' ) );
// output the random post
while ( $the_query->have_posts() ) : $the_query->the_post();
    echo '<li>';
    the_title();
    echo '</li>';
endwhile;

// Reset Post Data
wp_reset_postdata();

Verwenden Sie dann auf einer Seite einfach:

<a href="https://stackoverflow.com/questions/8672401/the%20link%20to%20the%20page">see a random post</a>

  • Es scheint nicht zu funktionieren. Bitte überprüfen Sie das Update in der Frage.

    – rlab

    30. Dezember 2011 um 20:03 Uhr

  • @rlesko Könnte das ein Sticky-Post-Problem sein? Einstellung könntest du versuchen ignore_sticky_posts Argument zu false 🙂 Ansonsten hast du einige große Fehler in deinem Code – ich habe deine Frage kommentiert 😉

    – jave.web

    31. Januar 2017 um 17:48 Uhr

  • Kein Sticky-Post-Problem, nur nicht ganz verstanden, wie diese Abfrage funktioniert. Das orderby “rand” ändert nur die Reihenfolge der abgefragten Posts, und die Angabe von posts_per_page von 1 bringt nur einen einzigen Post zurück. Es gibt also einen Post zurück und randomisiert dann die Reihenfolge (auch bekannt als immer derselbe Post).

    – Klar

    21. Juli 2017 um 17:22 Uhr

Erhalten Sie zufallige Beitrage in Wordpress
rlab

ich fand Das Beitrag, der mir die gewünschten Ergebnisse brachte …

Hier ist eine Lösung, die aus dem wpbeginner-Blogbeitrag kopiert/eingefügt wurde. Keine Urheberrechtsverletzung beabsichtigt.

Fügen Sie einfach den folgenden Code hinzu functions.php Datei:

add_action('init','random_add_rewrite');
function random_add_rewrite() {
   global $wp;
   $wp->add_query_var('random');
   add_rewrite_rule('random/?$', 'index.php?random=1', 'top');
}

add_action('template_redirect','random_template');
function random_template() {
   if (get_query_var('random') == 1) {
           $posts = get_posts('post_type=post&orderby=rand&numberposts=1');
           foreach($posts as $post) {
                   $link = get_permalink($post);
           }
           wp_redirect($link,307);
           exit;
   }
}

Verwenden mydomain.com/random/ wie dein href für Ihren Button, der zu dem zufälligen Post führt.

Vielen Dank an alle, die für Ihre Hilfe beigetragen haben …

Prost!

  • Dies ist eine interessante Lösung, obwohl sie vom Design her falsch ist – Sie sollten lieber Ihren ursprünglichen Code reparieren, da dies zu unnötigen Umleitungen führt 😉

    – jave.web

    31. Januar 2017 um 17:44 Uhr


  • Ihre Antwort implementiert die von @bingjie2680 bereitgestellte Lösung, um einen zufälligen WordPress-Beitrag zu finden, selbst wenn der Benutzer nicht die gesamte Funktionalität für Sie geschrieben hat.

    – FroboZ

    10. Juli 2020 um 7:49 Uhr

Ich finde es nützlicher, eine URL zu haben, die zu einem zufälligen Beitrag weiterleitet, den Sie als Link in der Seitenleiste oder in Menüs verwenden können. Wenn es sich um eine einzelne WP-Site handelt und sogar auf wp.com ist es wirklich einfach, für einen Blog unter

http://mygroovywpsite.me/

Alles, was Sie tun müssen, ist es mit ?random anzuhängen

http://mygroovywpsite.me/?random

Ich fand, dass dies nicht funktionierte (noch der wp_beginner-Code oben) auf Subsites in meiner Multisite-Installation, beide Ansätze haben gerade die Homepage geladen. Vielleicht hatte ich einige funky Cache-Probleme. Die Art und Weise, wie ich dies auf vielen Websites mache, sind ein paar weitere Schritte ohne Plugins.

Erstellen Sie zuerst eine Seite auf Ihrer Website mit dem Namen “Random” / mit dem Slug “Random” – sie benötigt keinen Inhalt darin

Erstellen Sie dann eine page-random.php-Vorlage

<?php
/*
Random Post Picker
Use on page to send viewer to random post optionally mod query
*/

// set arguments for WP_Query on published posts to get 1 at random
$args = array(
    'post_type' => 'post',
    'post_status' => 'publish',
    'posts_per_page' => 1,
    'orderby' => 'rand'
);

// It's time! Go someplace random
$my_random_post = new WP_Query ( $args );

while ( $my_random_post->have_posts () ) {
  $my_random_post->the_post ();

  // redirect to the random post
  wp_redirect ( get_permalink () );
  exit;
}
?>

Dann erhalten Sie die Weiterleitung für jeden Link in Ihrem Blog …../random ohne Ringen mit .htaccess

Ich habe es so gemacht, weil ich die Abfrage ändern musste, manchmal für den benutzerdefinierten Beitragstyp, manchmal, um sie auf die Kategorie einzuschränken usw.

Ich hatte nur eine Seite, die ein Problem darstellte, weil das Hosting die Verwendung von mySQL-Abfragen mit ORDER BY RAND() unterdrückte.

1647299946 420 Erhalten Sie zufallige Beitrage in Wordpress
pradip

Eine weitere einfache Lösung, um Random Post anzuzeigen

1. Erstellen Sie zunächst eine benutzerdefinierte Seitenvorlage. Benennen Sie es als zufälligen Beitrag oder einen Namen Ihrer Wahl!

2.Öffnen Sie die Seite und entfernen Sie die Standard-wp-Schleife und fügen Sie den folgenden Code ein

3.Um die Postnummer zu ändern, ändern Sie die Zahl ‘1’ in Ihre Wahl!

 <?php
query_posts(array('orderby' => 'rand', 'showposts' => 1));
if (have_posts()) :
while (have_posts()) : the_post(); ?>
 
<h1><a href="<?php%20the_permalink()%20?>"><?php the_title(); ?></a></h1>
 
<?php the_content(); ?>
 
<?php endwhile;

endif; ?>

Quelle: http://www.yengkokpam.com/displays-random-posts-in-a-page/

Überprüfen Sie dies

<ul>
<?php
$args = array( 'numberposts' => 5, 'orderby' => 'rand' );
$rand_posts = get_posts( $args );
foreach( $rand_posts as $post ) : ?>
   <li><a href="https://stackoverflow.com/questions/8672401/<?php%20the_permalink();%20?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
</ul>

1003390cookie-checkErhalten Sie zufällige Beiträge in WordPress

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy