wordpressのプラグインで、
過去のエントリをランダムでピックアップして
表示させてくれるようなものを探しています。
まさに、わたしが作った「エイプリルフールプラグイン」が該当ですね;-) エッセンス部分だけ抜き出したコードがありますので、これを参考にしてみてください。参考コードは、どんな URL で呼び出してもランダム表示になってしまうので、通常利用するには多少工夫が必要です。random_pickup の if 文を if (@$_GET['random'] == 'true') {...
みたいにするとか。
lilyfanさん、貴重なヒント、ありがとうございます。
通常のエントリ表示も行いつつ、1件だけランダムで
表示させる~という形のものを探していたので、
挑戦してみます。
ちなみに、WordPress 2.5 では、wp() および query_posts で orderby に rand という指定が可能になっています。これだと、プラグインを一切使わずテーマファイルだけの調整で可能です。
2.5は周囲で動作がおかしくなってしまった人がいて、
手が出しづらいんですけど、その指定は大変魅力的ですね…。
実はphpでやっている事は大体把握出来るのですが、分からない所が
数点あります。
random_pickup の if 文を if (@$_GET[‘random’] == ‘true’) {
この部分はlilyfanさんがブログで公開されているphpプログラムの
最初の部分に導入するのか、もう1箇所の所に導入するのかという所
に迷っています。
おそらく、後者だと思うのですが。
もう一点。これはWPの独自タグだと思うのですがtemplate_redirectは
どのような意味を持つのでしょうか?
WPの指南書を丁度知人に貸しておりまして、確認できず迷っております。
この部分はlilyfanさんがブログで公開されているphpプログラムの最初の部分に導入するのか、もう1箇所の所に導入するのかという所に迷っています。
最初の方です。2番目の if 文は、ランダム表示対象が、投稿かページかで処理を分けるためのものなので、ここを変更するとうまく動きません。
もう一点。これはWPの独自タグだと思うのですがtemplate_redirectは
どのような意味を持つのでしょうか?
wp-includes/template-loader.php にあるアクションです。初期化処理を終えて、現在の URL に応じたテンプレートを読み込む直前で実行されます。したがって、普段使用されるテンプレートを読ませずに、その処理を横取りして、別の処理をさせることが可能になるわけです。
丁寧な指導ありがとうございます。
プラグインはうまく動くようになりましたが、indexに
表示されるように表示させるには、別途プログラムを作る必要があるのでしょうか?
初めてWPのプラグインを自分で何とかしようと
しているので、ドキドキと同時にお手数をおかけして
申し訳ない気持ちでいっぱいです。
ランダム表示をどのように使うのか、がよく分からないので、何とも言い難いです。
提案した修正は、http://blog.example.jp/?random=true という URL にしたときのみランダム表示にするというものです。
通常の記事の下にランダム表示させるならば、index.php テンプレートにおいて、WordPress ループのあとにランダム表示関数 (random_pickup) の中身を書いてやるとか、そういう方法が取れます。
ランダム表示処理をどこに組み込むかは、使っているテーマのテンプレート構造にも左右されるので、そこは腕の見せどころでしょう。
phpの本を見たり格闘中です。
ランダム表示をどのように使うのか、がよく分からないので、何とも言い難いです。
http://not8found.biz/o2/
このブログのインデックス部分に表示されている
通常の新規投稿されたエントリがあります。
このような感じで表示が出来たら、過去のエントリに
改めて興味を持っていただけるのではないかな?
と、思ったもので色々調べています。
久し振りに書き込みします。
lilyfanさんが以前仰っていた
ちなみに、WordPress 2.5 では、wp() および query_posts で orderby に rand という指定が可能になっています。これだと、プラグインを一切使わずテーマファイルだけの調整で可能です。
という件を思い出して、思い切って新しい
ブログを用意して試しているのですが、プログラムに
疎いうえに、上記のwp()が何でどこを指しているのか?
という所が分からず困惑しております。申し訳ありませんが
ご指摘願えませんしょうか?お忙しいのにもうしわけありません。
wp(), query_posts()
というのは、新たな検索条件で WordPress ループを開始してしまうという関数です。「WordPress ループ」で調べてみてください。
http://not8found.biz/o2/
みたいな表示をするならば、get_posts()
を使って、WordPress ループを壊さずに投稿データーを取得した方がいいですね。
丁寧な説明ありがとうございます。
今夜早速試してみます!成功しましたら、改めてご報告
させていただきますね!