web-dev-qa-db-ja.com

WordPress 3.0で「すべての投稿」または「アーカイブ」ページを作成しますか?

Ocean Bytes blog )に、日付順に並んでいるすべてのタイトルのリストを含む"All Posts"ページを作成します。そのブログ記事。

このようなことをするプラグインがいくつかあるようですが、ほとんどはまだサポートされているWordpress 3.0以降をリストしていないか、年によって、そして次に望まれていない月によってブログ投稿をサブセット化したいです。

「最善の方法」についての提案はありますか?

THX。

3
cpuguru

次のコードを含む「Twenty-Ten Themes」フォルダに、「allposts-page.php」というページテンプレートを作成しました。

<?php
/**
 * Template Name: All Posts
 *
 * A custom page template for displaying all posts.
 *
 * The "Template Name:" bit above allows this to be selectable
 * from a dropdown menu on the edit page screen.
 *
 * @package WordPress
 * @subpackage Twenty_Ten
 * @since Twenty Ten 1.0
 */

get_header(); ?>

  <div id="container">
   <div id="content" role="main">
<h2>Archive of All Posts:</h2>
  <ul>
    <?php wp_get_archives('type=postbypost'); ?>
  </ul>


   </div><!-- #content -->
  </div><!-- #container -->

<?php get_footer(); ?>

その後、Wordpressの管理システムを使用して「すべての投稿」というタイトルの新しいページを作成し、ドロップダウンから「すべての投稿」テンプレートを選択しました。体に何も入れる必要はありませんでした。

結果のページは、次の場所にあります。

www.oceanbytes.org/all-posts/

"wp_get_archives"のデフォルトは "毎月"ですが、私は長いリストのように全ての投稿をリストしたいだけなので "postbypost"を選びました。 Wordpressのサイトでは、 Function Reference/wp get archives を使って他のオプションを見つけることができます。

3
cpuguru

新しいテンプレートファイルを作成し、これをループとして実行します。

query_posts( array( 'posts_per_page' => -1, 'post_status' => 'publish' ) );
if( have_posts() ):
  echo '<ul>';
  while( have_posts() ):
    the_post();
    echo '<li><a href="';
    the_permalink();
    echo '">';
    the_title();
    echo '</a></li>';
  endwhile;
  echo '</ul>';
endif;
wp_reset_query();

そのテンプレートをページに使用するだけで、自動的にページが生成されます。 コーデックスページをチェックしてください クエリの変更方法に関する詳細はquery_posts()を参照してください。

3
John P Bloch

「最善の方法」は、カスタムページテンプレートを使用することです。 index.phpがすべての投稿をループ処理するのと同じように、カスタムクエリを実行してすべてをポスト処理し、必要な情報(タイトル、URL)のみをブラウザにエコーすることができます。

カスタムページテンプレートを作成するための良いチュートリアルがいくつかあります。

3
EAMann