質問: wordpress 3.0のナビゲーションメニューに投稿のアーカイブを追加する やあ、wordpress 3.0と2つの新機能、 カスタム投稿タイプ と メニューエディタ で遊んでいる。私はあなたが推測したように、 "products"と呼ばれる新しい投稿タイプを作成することから始めました。私は沼地の標準的なテンプレートを使っていて、トップナビゲーションを置き換えるために新しいメニューを作成しています。私が見ることができる限り、私は特定の "products" しか追加できませんが、 "archive" を追加することはできません。私がやろうとしているのは、すべての商品を一覧表示するページに移動するためのメニューへのリンクを追加することです。これを行う方法がありますか?
回答: @dotty このtracチケットでわかるように: カスタム投稿タイプのインデックスページがあるはずです 明らかにその必要性はまだ扱われていませんwordpressのコア.@ john p blochと@chris_oの両方があなたに良い選択肢を与えます。私はあなたに3番目をあげるつもりです。a "製品"ページまず、カスタム投稿タイプに page を作成し、"products"という名前を付けます。それはそれに次のurlを与えるでしょう: http://example.php/products/ / a "製品リスト"ショートコード次に"products"ページに埋め込むことができる shortcode を作成します。私の例では、私はそれを[product-list]と呼びました。これがどのように使われるかのスクリーンショットです。 (出典: mikeschinkel.com )このようなショートコードは、多数のオプション機能を追加し、さまざまな種類の投稿に使用できるようにするための優れた候補になりますが、わかりやすくするために、すべてをハードコードしました。もちろんあなた自身のショートコードの出発点としてそれを使うことができます:<?php add_shortcode('product-list', 'my_product_list'); function my_product_list($args) { $save_post = $globals['post']; // save state so you can restore later $post_type = 'product'; $template_file = get_stylesheet_directory() . "/post-{$post_type}.php"; if (!file_exists($template_file)) { return "<p>missing template [$template_file].</p>"; } else { global $post; $q = new wp_query("showposts=10&post_type={$post_type}&orderby=title&order=asc"); $rows = array(); $rows[] = '<div class="post-list ' . $post_type . '-post-list">'; global $post_list_data; $post_list_data = array(); $post_list_data['post_count'] = $post_count = count($q->posts); foreach ($q->posts as $post) { $q->the_post(); ob_start(); include($template_file); $rows[] = ob_get_clean(); } $rows[] = '</div>'; $globals['post'] = $save_post; return implode("\n",$rows); } } post-product.phpテーマテンプレートファイル次に、1つの商品だけを表示するテーマテンプレートファイルを作成する必要があります。ショートコードを実装する関数はテンプレートファイルをpost-product.phpと命名します、そしてここが良い出発点です:<?php /** * post-product.php - file to display only one product within a list of products. */ ?> <div id="post-<?php the_id(); ?>" <?php post_class(); ?>> <h2 class="entry-title"><?php the_title(); ?></h2> <div class="entry-content"> <?php the_content(); ?> </div> </div> メニューオプションを追加する最後に、メニューオプションを追加します。このスクリーンショットからわかるように、これは非常に簡単です(以下では、wordpress 3.0のメニューで何もしたことがなく、twenty tenなどのwordpress 3.0のメニューをサポートするテーマを使用していると仮定します)。 管理者メニューのメニューオプションを選択します。 "+" をクリックして新しいメニューを追加します。 好きな名前でメニュー名を入力してください。 "create menu"ボタンをクリックします(スクリーンショットは"save menu"を示していますが、追加すると"create menu"になります)。 新しいメニューを"primary navigation"として選択します。 "products"ページを選択してください。 クリック"メニューに追加" クリック"メニューを保存" (出典: mikeschinkel.com )最後に、出力そして、これが基本的な製品リストがどのように見えるかです: (出典: mikeschinkel.com )