2011-06-11 12 views
0

あなたが簡単に解決できるWordpressの問題を助けることができるのだろうか?

http://www.totalbackpacker.co.ukに雑誌スタイルのテーマを作成しました。このテーマは、ページの上部に3つの「おすすめ」の記事があり、その後に最新の投稿が続きます。

$do_not_duplicateメソッド(http://codex.wordpress.org/The_Loop#Multiple_Loops_in_Action)を使用すると、最新の投稿のリストに表示される投稿を省略することができました。おそらく$do_not_duplicateは一度だけ使用されることが意図されているため、2番目と3番目の特集記事を省略しようとすると難しいです。

私が使用してメインの注目記事を表示しています:

<?php query_posts('category_name=editors-picks-main&posts_per_page=1'); ?> 
<?php if (have_posts()) : ?> 
<?php while (have_posts()) : the_post(); 
$do_not_duplicate = $post->ID; ?> 

だから、基本的にeditors-picks-mainカテゴリから最新のポストを引っ張っています。

「第2」注目記事( editors-picks-sub-1カテゴリから最新のポスト)を使用して表示され

<?php query_posts('category_name=editors-picks-sub-1&posts_per_page=1'); ?> 
<?php if (have_posts()) : ?> 
<?php while (have_posts()) : the_post(); ?> 

そして、使用して「第三」注目記事(editors-picks-sub-2カテゴリの最新記事):私が使用している:最も最近の記事セクション(支柱は、2つの列に広がっているので、このコードが繰り返される音符):については

<?php query_posts('category_name=editors-picks-sub-2&posts_per_page=1'); ?> 
<?php if (have_posts()) : ?> 
<?php while (have_posts()) : the_post(); ?> 

<?php query_posts('category_name=blog&posts_per_page=4'); ?> 
<?php if (have_posts()) : ?> 
<?php $count = 0; ?> 
<?php while (have_posts()) : the_post(); 
if($post->ID == $do_not_duplicate) continue; ?> 
<?php $count++; ?> 
<?php if ($count == 1) : ?> 
<h5 class="smaller"><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h5> 
<p class="editorspickssml"><?php the_excerpt(); ?></p> 
<?php elseif ($count == 2) : ?> 
Second post here 
<?php elseif ($count == 3) : ?> 
Third post here 
<?php elseif ($count == 4) : ?> 
Fourth post here 
<?php endif; ?> 
<?php endwhile; ?> 
<?php endif; ?> 

どのように私はこれを動作させることができるかもしれないかについての提案はありますか?私はeditors-picks-sub-1editors-picks-sub-2のコードコードに$do_not_duplicate = $post->ID; ?>と似たようなものを追加する必要があることを知っています...私はちょっと分かりません!

私はどんなヒントにも本当に感謝しています!あなたの助けを事前に

おかげで、

マーティン

+0

'$ do_not_duplicate2 = $ post-> IDを追加してもうまくいくかどうかは疑問でした。 ? 'を' editors-picks-sub-1'セクションと '$ do_not_duplicate3 = $ post-> IDに置き換えます。 ?'を' editors-picks-sub-2'セクションに追加し、 'if($ post-> ID == $ do_not_duplicate || $ do_not_duplicate2 || $ do_not_duplicate3) ?> '最近の投稿については...それはそう思わない。私は正しい軌道にいるのですか?ありがとう! – Martin

+0

ああ、はい、私は正しい軌道に乗っていた!私はちょうど答えを投稿しようとしています... – Martin

+0

OK、まだ投稿できません...しかし、$ do_not_duplicate = $ post-> ID;を使用して開始します。複製したくない その後、投稿のさらなるループについて '$ do_not_duplicate2 = $ post-> ID;'、 '$ do_not_duplicate3 = $ post-> ID;'、 '$ do_not_duplicate4 = $ post->; s)あなたは複製したくありません。 重複した投稿を含むことを避けたいループの場合は、次のようにしてください: 'if($ post-> ID == $ do_not_duplicate || $ post-> ID == $ do_not_duplicate2 || $ post- > ID == $ do_not_duplicate3 || $ post-> ID == $ do_not_duplicate4)continue; update_post_caches($ posts); ' – Martin

答えて

0

は、最初の3のIDを収集し、変数に「記事を特色に」。

あなたのループを除外するためにポストのIDを保持する前に、配列を作成します:あなたは

$exclude = new Array(); 

を、第1、第2、および第3のループが配列にポストのIDを追加します。

array_push($exclude,$post->ID); 

最近の投稿クエリからそれらのIDを除外します。

query_posts('category_name=blog&posts_per_page=4&post__not_in='.$exclude); 

注:私は、そのようなクエリの投稿を使用する必要があるかどうかはよく分かりません。また、ページネーションを機能させるには、ページ変数をインクルードする必要があります。

関連する問題