2011-12-29 100 views
7

如何在Wordpress中獲得隨機文章?在Wordpress中獲取隨機文章

我想在頁面上顯示一個按鈕,當按下它時,它會從博客中隨機發布。我不希望在網頁上顯示隨機帖子,我只想要一個導向該帖子的鏈接。 我試過在谷歌上搜索代碼,在這裏在stackoverflow但沒有成功。

謝謝...

UPDATE:

這裏是我的模板代碼:

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

或許,這可以幫助你:隨機後的插件(http://wordpress.org/extend/plugins/random-posts-plugin/) – Cyclonecode 2011-12-29 19:22:16

+0

謝謝但我希望得到一個簡單的代碼。這個插件不允許定製鏈接,因爲我可以用一個按鈕替換最近的帖子列表。任何其他想法? – rlesko 2011-12-29 19:44:15

+0

@ rlesko a)**不要使用可以通過核心進行全球化的變量 - 不要使用「'$ query'」,「'$ post'」等等。 '$ myQuery'或類似的東西... – 2017-01-31 17:40:12

回答

5

我發現this後這給了我想要的結果...

這裏有一個解決方案複製/從wpbeginner博客文章粘貼。無侵犯版權之意。

只是將下面的代碼添加到functions.php文件:爲你的按鈕,導致隨機後

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; 
    } 
} 

使用mydomain.com/random/爲您href

感謝大家誰貢獻你的幫助...

乾杯!

+0

這是一個有趣的解決方案,雖然設計錯誤 - 你應該寧願修復原始代碼,因爲這會帶來不必要的重定向;) – 2017-01-31 17:44:09

7

創建一個頁面模板,使用下面的代碼來獲得一個隨機的帖子:

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

然後在一個頁面中,只需使用:

<a href="the link to the page">see a random post</a> 
+1

它似乎沒有工作。請檢查問題中的更新。 – rlesko 2011-12-30 20:03:40

+0

@rlesko這可能是一個粘滯的帖子問題?您可以嘗試將'ignore_sticky_posts'參數設置爲**'false' ** :)否則,您的代碼中會出現一些重大錯誤 - 我已對您的問題進行了評論;) – 2017-01-31 17:48:44

+0

不是一個棘手的帖子問題,只是不太明白查詢工作。 「蘭德」順序只會改變已查詢的帖子的順序,並告訴它的posts_per_page爲1只能帶回一個帖子。所以它返回一個帖子,然後隨機化訂單(又名總是同一個帖子)。 – clark 2017-07-21 17:22:36

1

入住這

<ul> 
<?php 
$args = array('numberposts' => 5, 'orderby' => 'rand'); 
$rand_posts = get_posts($args); 
foreach($rand_posts as $post) : ?> 
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> 
<?php endforeach; ?> 
</ul> 
3

我發現這是更加有用的將重定向到一個隨機的帖子,你可以在側邊欄或菜單作爲鏈接使用的URL。如果它是一個單一的WP網站,甚至在wp.com它真的很容易,一個博客在

http://mygroovywpsite.me/ 

所有你需要做的是將其追加?隨機

http://mygroovywpsite.me/?random 

我發現這確實對我的多站點安裝中的子站點不起作用(也不是上面的wp_beginner代碼),這兩種方法都只是加載主頁。也許我有一些時髦的緩存問題。我在許多網站上這樣做的方式是無插件的幾個步驟。

首先要在你的網站被稱爲「隨機」 /用塞「隨機」頁面 - 它並不需要在它的任何內容

然後創建一個頁面模板random.php

<?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; 
} 
?> 

然後你可以重新指向你博客上的任何鏈接..... /隨機w/o任何摔跤。htaccess的

我已經做到了這種方式,因爲我不得不修改查詢,有時自定義後的類型,有時限制類等

我只有一個網站,是因爲有問題託管抑制使用MySQL查詢與ORDER BY RAND()

+0

工程就像魅力。 – 2016-06-13 19:45:06

0

另一種簡單的解決方案,以顯示隨機郵政

1.首先創建一個自定義的頁面模板。將其命名爲隨機文章或您選擇的名稱!

2.Open頁面,刪除默認的WP循環和粘貼下面的代碼

3.To改變無後的改號「1」,您的選擇!

<?php 
query_posts(array('orderby' => 'rand', 'showposts' => 1)); 
if (have_posts()) : 
while (have_posts()) : the_post(); ?> 

<h1><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1> 

<?php the_content(); ?> 

<?php endwhile; 

endif; ?> 

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