2011-12-29 16 views
7

Wordpressでランダム投稿を取得するにはどうすればよいですか?Wordpressでランダム投稿を取得する

私は、押したときにブログからランダムな投稿に移動するボタンを表示したいと考えています。ランダムな投稿をページに表示したくない場合は、その投稿につながるリンクが必要です。 Googleでコードを検索しようとしましたが、ここでは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

+0

感謝私は単純なコードを期待していました。このプラグインでは、最新の投稿のリストをボタンで置き換えることができるという意味でのリンクのカスタマイズは許可されていません。他のアイデア? – rlesko

+0

@rlesko a)**コアでグローバル化された変数を使用しないでください。 "$ query'"、 "$ post'"などを使わないでください。 '$ myQuery'などのようなものです... –

答えて

5

私は...

を私が所望の結果を示した0​​ポストを見つけました。ここwpbeginnerのブログ記事から貼り付けソリューションのコピーは/です。著作権侵害は意図されていません。

だけfunctions.phpファイルに次のコードを追加します:ランダムポストにつながるあなたのボタンのあなたのhrefとして

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/

お返事ありがとうございました...

乾杯!

+0

これは興味深い解決策ですが、設計上間違っていますが、不要なリダイレクトが発生するため、元のコードを修復する必要があります) –

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

+0

@rleskoそれはスティッキーポストの問題かもしれませんか?あなたは 'ignore_sticky_posts'引数を**' false'に設定しようとすることができます** ** :)あなたのコードにいくつかの大きなバグがあります - 私はあなたの質問にコメントしました;) –

+0

これはどういう仕組みか分かりませんクエリが機能する。 orderby "rand"は質問された投稿の順序を変更し、posts_per_pageが1であると伝えると、1つの投稿のみが返されます。したがって、1つの投稿を返し、次にその注文をランダム化します(別名は常に同じ投稿)。 – clark

1

チェック私はあなたがサイドバーやメニューにリンクとして使用することができ、ランダムなポストにリダイレクトするURLを持つことがより有用である見つけるこの

<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

。それも、それは

http://mygroovywpsite.me/ 

でのブログのために、本当に簡単ですwp.com上の単一のWPサイトとであれば、あなたがする必要があるすべてはでそれを追加しているのですか?

http://mygroovywpsite.me/?random 
ランダム

私はこれがやりました私のマルチサイトインストールのサブサイトでは動作しません(上記のwp_beginnerコードもありません)。たぶん私はいくつかのファンキーなキャッシュの問題があった。私が多くのサイトでこれを行う方法は、プラグインを使用しないでいくつかのステップがあります。

まず「ランダム」スラグと/「ランダム」と呼ばれるサイト内のページを作る - それは

内のコンテンツを必要としません。そして、

<?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; 
} 
?> 
ページ-random.phpテンプレートを作成します

あなたはあなたのブログの任意のリンクのためにリダイレクトを取得します..... /ランダムw/o任意のレスリングと。htaccessの

私は、時々のカテゴリに制限するために、カスタムポストタイプのために、時には、クエリーを変更しなければならなかったので、私はそれをこのようにやった

など

私が唯一の問題ためだった一つのサイトを持っていましたホスティングは

1.Firstカスタムページを作成するテンプレートランダムポスト

を表示するには、RAND()

+0

charmのように動作します。 –

0

BY ORDERで別のシンプルなソリューションをMySQLのクエリの使用を抑制しました。ランダムな投稿または名前の名前を付けてください!

2.OpenページとデフォルトのWPのループを削除し、ポストのないはあなたの選択に番号「1」に変更する変更しない3.To

以下のコードを貼り付け!

<?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/

関連する問題