
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(); ?>

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>

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!
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.

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>
10033900cookie-checkErhalten Sie zufällige Beiträge in WordPressyes
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 fragenif(have_posts())
– das ist die MAIN-Abfrage, die Sie haben solltenif($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