0

プラグインを使用して、「製品」と呼ばれるカスタム投稿タイプを作成した Wordpress 3 Web サイトをセットアップしようとしています。このカスタム投稿タイプに加えて、カスタム分類法を作成したので、ブログのカテゴリに干渉することなく製品をカテゴリに配置できます。これはすべて、管理システムを通じてうまく機能しています。ここまでは順調ですね。

製品とカテゴリにアクセスしたいときに問題が発生します。理想的には、次の URL 構造を持っています。

/products- すべてのカテゴリを含むページを表示します。

/products/category- 指定された「カテゴリ」に割り当てられたすべての製品を表示します。

/products/product- 単一の製品を表示します。

過去数日間、さまざまな情報源を読んでいますが、探している情報が非常に断片化されているようで、問題について非常に混乱しており、必要なことが実際に可能であるかどうかがわかりませんワードプレス。

私が非常に混乱している次のことは、上記の例に示されている URL がテーマ エンジンとどのように結びついているかということです。どのテンプレートを作成すればよいのか、どのフックを結びつければよいのか、完全には理解していません。

したがって、基本的な質問は次のとおりです。カスタム投稿タイプとカスタム分類を正しいテーマ テンプレートにマップするにはどうすればよいですか?

4

1 に答える 1

1

これは古い質問ですが、これは他の誰かを助けるかもしれません…</p>

目的を達成するには、 WordPress 関数のregister_post_typeregister_taxonomyを使用する必要があります。

functions.php ファイルでこれに似たものが必要になります

// Register Custom Post Type
function products() {
    $labels = array(
        'name'                => 'Products',
        'singular_name'       => 'Product',
        'menu_name'           => 'Product',
        'parent_item_colon'   => 'Parent Product:',
        'all_items'           => 'All Products',
        'view_item'           => 'View Product',
        'add_new_item'        => 'Add New Product',
        'add_new'             => 'New Product',
        'edit_item'           => 'Edit Product',
        'update_item'         => 'Update Product',
        'search_items'        => 'Search products',
        'not_found'           => 'No products found',
        'not_found_in_trash'  => 'No products found in Trash'
    );
    $args = array(
        'label'               => 'product',
        'description'         => 'Product information pages',
        'labels'              => $labels,
        'supports'            => array( 'title', 'editor', 'excerpt', ),
        'taxonomies'          => array( 'category' ),
        'hierarchical'        => false,
        'public'              => true,
        'show_ui'             => true,
        'show_in_menu'        => true,
        'show_in_nav_menus'   => true,
        'show_in_admin_bar'   => true,
        'menu_position'       => 5,
        'menu_icon'           => '',
        'can_export'          => true,
        'has_archive'         => true,
        'exclude_from_search' => false,
        'publicly_queryable'  => true,
        'capability_type'     => 'post'
    );
    register_post_type( 'product', $args );
}
// Hook into the 'init' action
add_action( 'init', 'products', 0 );

// Register Custom Taxonomy
function product-category()  {
    $labels = array(
        'name'                       => 'Product Category',
        'singular_name'              => 'Product Categories',
        'menu_name'                  => 'Product Category',
        'all_items'                  => 'All Product Categories',
        'parent_item'                => 'Parent Product Category',
        'parent_item_colon'          => 'Parent Product Category:',
        'new_item_name'              => 'New Product Category Name',
        'add_new_item'               => 'Add New Product Category',
        'edit_item'                  => 'Edit Product Category',
        'update_item'                => 'Update Product Category',
        'separate_items_with_commas' => 'Separate product categories with commas',
        'search_items'               => 'Search product categories',
        'add_or_remove_items'        => 'Add or remove product categories',
        'choose_from_most_used'      => 'Choose from the most used product categories',
    );
    $rewrite = array(
        'slug'                       => 'product-category',
        'with_front'                 => true,
        'hierarchical'               => true,
    );
    $args = array(
        'labels'                     => $labels,
        'hierarchical'               => false,
        'public'                     => true,
        'show_ui'                    => true,
        'show_admin_column'          => true,
        'show_in_nav_menus'          => true,
        'show_tagcloud'              => true,
        'query_var'                  => 'product-category',
        'rewrite'                    => $rewrite,
    );
    register_taxonomy( 'product-category', 'product', $args );

}
// Hook into the 'init' action
add_action( 'init', 'product-category', 0 );

http://generatewp.com/post-type/のようなカスタム投稿ジェネレーターを使用して、すべてのオプションを操作するときに作業を楽にすることができます。

カスタム投稿タイプとタクソノミーを登録したら、このコードを追加するか、URL 構造に修正を加えたら、DNS ルールをフラッシュすることが重要です。これを行うには、WordPress 管理者の [設定] -> [パーマリンク] ページにアクセスすると、DNS ルールが自動的にフラッシュされます。

表示されるテンプレートを制御するには、テーマ フォルダー内の次のファイルを編集します。

  • アーカイブ-product.php
  • taxonomy-product-category.php
  • single-product.php
于 2013-08-05T23:22:25.943 に答える