2011-09-08 8 views

答えて

1

私は同様の質問hereに答えてきましたが、私はあなたが助けると思うものを要約します。 hereについて詳しく知るカスタムクエリが必要になります。

別々の 'div'要素を使用して、さまざまな方法で各投稿を並べ替えることができます。そして、jQueryを使ってそれらをすべて隠すことができます(「最近の」パネルを除く)。その後、jQuerys.click()イベントハンドラを使用してリンクを使用して、関連する「div」要素を表示することができます(他の要素はすべて非表示になります)。

さまざまな方法でソートされた投稿で各div要素を設定するには、カスタムクエリを使用します。たとえば、コメント数でソートするには、この関数を 'functions.php'ファイルで定義します。

function get_most_commented($limit=10) { 
    global $wpdb; 

    $most_commented = $wpdb->get_results("SELECT comment_count, ID, post_title FROM $wpdb->posts WHERE post_type='post' AND post_status = 'publish' ORDER BY comment_count DESC LIMIT 0 , $limit"); 

    foreach ($most_commented as $post) { 
     setup_postdata($post); 
     $id = $post->ID; 
     $post_title = $post->post_title; 
     $count = $post->comment_count; 
     $output .= '<li><h1><a href="'. get_permalink($id).'">'.$post_title.' - '.$count.' comments</a></h1> post_excerpt;</li>'; 
    } 
    return $output; 
} 

は、上記からの関連「のdiv」要素内には、関数を呼び出す:注文/順不同リスト内の

<?php echo get_most_commented(15) ?> 

(ほとんどの15件の記事をコメント表示します)。この例ではタイトルと抜粋のみを出力しますが、HTMLを変更したり、CSSのスタイリングを使って必要なものを得ることができます。

希望すると便利です。あなたは私にこのチュートリアルを書いてもらうように促しました!

編集: 私はちょうどあなたが与えたNettutsの例を見てきました。彼らはPHPのGETメソッドを使って投稿を再分類しています。リンクをクリックすると、同じページに送られるが、異なるget変数(たとえば、recent = true、commented = true)が送信されます。このページには一連のphp if文が含まれており、GET変数が 'true'に設定されているかどうかによって投稿をどのようにソートするかを決定します。

これは、jQuery(または実際にはJavaScriptがオンになっている)を必要としないという利点があります.3種類のソート方法をすべて一度に読み込む必要はありません。

+0

私はこのコードを入れ 'その後、function.phpにコードの上に置く<' ' 上記のphp(have_posts())場合:?$カウント= 0; ?><?php while(have_posts()):the_post(); $ count ++; ?><! - 検索項目 - ><?php endwhile; else:?><?php endif; ?>(アーカイブ/検索ページ) 検索/アーカイブページ(search.php)に変更がありますか? – atali

+0

このコードを使用して、最も多く閲覧した投稿を取得します。 '<?php query_posts( 'meta_key = post_views_count&orderby = meta_value_num&posts_per_page = 3&order = DESC'); if(have_posts()):while(have_posts()):the_post();ソートの記事では?> ' i「は最も閲覧」を追加したい(post_views_count)タブ「ほとんどのコメント」を伴って含む は を照会私を助けてください、私は非常に混乱し を試してみましょう:) – atali

+0

あなたはに人々を欠けています検索結果を並べ替えることができますか?そうであれば、検索用語をクエリに含める必要があります。これがすべて(または最初の15の投稿)を並べ替えるだけの場合は、index.phpファイルにこれを入れたいと思うでしょう。 –

1

あなたは今何をしているのか分かります。少し読んだ後、私はそれを行うためのより良い(最高の)方法を実現しました。私の最初の答えとはまったく異なるアプローチなので、私は2番目の答えとして投稿しています。

詳細なチュートリアルhereを作成しました。要するに、あなたが1つのページを指し示すリンクを定義しますが、WordPressに特定の方法で投稿を並べ替えるよう指示するGET変数があります。デフォルトではWordPressの種類によって日付が、それは(この場合は、コメントの数で)違っそれを注文するURLに

?&orderby=comment_count&order=desc 

を追加。これはカスタムフィールドであるためポストビューでは少し異なります(まだwp-postビュープラグインが必要です)。

希望すると便利です。

+0

こんにちは、ありがとう! あなたのブログは開けませんか? – atali

+0

私はそれが少し遅いと思った。私は困っていた!私は今すぐ試してみたところ、うまくいきました。 –

関連する問題