サポート » 使い方全般 » カスタム投稿とデフォルトカテゴリの紐付け

  • wordpress初心者です。ご教授いただければ幸いです。

    投稿 →デフォルト
    レシピ投稿→カスタム投稿

    ■やりたい事
    カスタム投稿(レシピ投稿)の登録時に、カテゴリにチェックを入れ(ID=6)
    category.phpで一覧を取得したいと思います。
    つまり、デフォルトカテゴリと紐付けをしたいと思っています。
    どのように記述すればcategory.phpで取得できますか?

    すでに
    Posts 2 Postsのプラグインを使用してデフォルト投稿との紐付けはしています。

    functions.php
    // カスタム投稿 レシピ
    add_action(‘init’, ‘my_register_post_type’);

    function my_register_post_type() {
    register_post_type(‘recipe’, array(
    ‘labels’ => array(
    ‘name’ => ‘レシピ投稿’,
    ‘singular_name’ => ‘レシピ’,
    ‘add_new’ => ‘新規投稿’,
    ‘edit_item’ => ‘レシピを編集’,
    ‘new_item’ => ‘新規レシピ’,
    ‘view_item’ => ‘レシピを表示’,
    ‘search_items’ => ‘Search myPosts’,
    ‘not_found’ => ‘No myPosts found’,
    ‘not_found_in_trash’ => ‘No myPosts found in Trash’
    ),
    ‘public’ => true,
    ‘has_archive’=>false, //アーカイブON
    ‘supports’ => array(
    ‘title’,
    ‘editor’,
    ‘excerpt’,
    ‘thumbnail’,
    ‘custom-fields’
    ),
    ‘taxonomies’ => array(‘category’, ‘post_tag’) // カテゴリとタグを追加
    ));
    }

    add_action(‘init’, ‘my_add_default_boxes’);

    function my_add_default_boxes() {
    register_taxonomy_for_object_type(‘category’, ‘recipe’);
    register_taxonomy_for_object_type(‘post_tag’, ‘recipe’);
    }

    足りない記述があるかもしれませんが、その時は補足致しますので
    どうぞよろしくお願い致します。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • rinrin3_さん、こんにちは。

    現在使用されているテーマのfunctions.phpに次のコードを追加してみてください。

    add_action( 'pre_get_posts', 'category_any_posts' );
    function category_any_posts( $query ) {
    	if ( $query->is_category && $query->is_main_query() ) $query->set( 'post_type', 'any' );
    }

    上記は、カテゴリーの検索時に登録されている投稿タイプすべてを対象に
    するものです。すべての投稿タイプではなく、任意の投稿タイプにする
    場合は ‘any’ を array( ‘post’,’recipe’ ) といった感じにするといいと
    思います。

    トピック投稿者 rinrin3_

    (@rinrin3_)

    tmatsuurさん、ご回答いただき、ありがとうございます。
    嬉しく思います。

    上記のコードを追加したところ、syntax errorとエラーが表示されます。
    どこがエラーでているのか、分かりませんでしたので教えていただけないでしょうか?

    また
    ‘any’ を array( ‘post’,’recipe’ )
    とございますが、
    上記のコードをどこにどのように書けばよいか、初心者で書き方が分かりませんので
    具体的に教えて頂けると幸いです。

    rinrin3_さん、こんばんは。

    こちらで試した限りでは特にエラーになってないです。
    functions.phpに追加した場所が悪い、追加した内容が間違っている(不十分やタイプミス)、category_any_postsという関数名がすでにどこかで使われている、Windowsのメモ帳などのPHP編集に適さないエディタで編集した、のいずれかの可能性が高いと思いますが、具体的なエラー内容を見ないとはっきりしませんね。

    WordPressをインストールしたディレクトリにwp-config.phpというファイルがあります。このファイルの中に次の記述を見つけることができますか。
    define('WP_DEBUG', false);
    見つけることができたなら、falseの部分をtrueにして保存することで、より詳しいエラー内容を表示することができます。確認が終わったら忘れずにfalseに戻してください。

    ‘any’を書き換えて投稿’post’とカスタム投稿タイプ’recipe’の両方を対象にする場合は、以下のようになります。

    add_action( 'pre_get_posts', 'category_any_posts' );
    function category_any_posts( $query ) {
    	if ( $query->is_category && $query->is_main_query() )
    		$query->set( 'post_type', array( 'post','recipe' ) );
    }

    では。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「カスタム投稿とデフォルトカテゴリの紐付け」には新たに返信することはできません。