サポート » 使い方全般 » 画像のタクソノミ追加で、not foundなリンク

  • 解決済 nobita

    (@nobita)


    タクソノミ勉強中です。

    画像にタクソノミを追加するために、以下のコードを試しました。

    register_taxonomy(
                 'sky',                             #項目追加
                 'attachment:image',        #コンテンツの種類
                 array(
                        'label' => '天気',       #項目ラベル
                        'helps' => '天気を入力して下さい。'       #項目説明
                 )
    );

    メディア編集画面(media.php?attachment_id=999&action=edit)にタクソノミのテキストフィールドが追加されます。

    表示用に

    while(have_posts()):ループの中で

    <?php the_taxonomies();?>
    <?php echo get_the_term_list( $post->ID, 'sky', 'お天気: ', ', ', '' ); ?>

    としてリンクを表示(http://www.example.com/wp/sub/?sky=%E6%99%B4%E3%82%8C)させました
    taxonomy.phpが適用されますが、

    if (have_posts())が、falseになってしまいます。

    ネットワーク、twentytenの子テーマです

    やり方が悪いのか、無理筋なのか、わからないので 教えてください

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • post_type = attachment な記事は WordPress の仕様で
    post_status = inherit なのですが
    クエリで明示的に post_status を指定しない限り
    post_status = public として処理されてしまい(wp-includes/query.php 2227〜2275行)
    「post_type=attachment and post_status=public」の条件で記事を探すので
    Not Found になってしまいます。

    では、URL に &post_status=inherit を指定すれば良いかというと
    post_status は WP::$private_query_vars (wp-includes.classes.php 39行) の一員なので
    query_posts(), get_posts() などの指定は効いても
    URL での指定は無視されてしまいます。

    なので、ムリムリですが実現するには、
    functions.php で

    global $wp;
    $wp->add_query_var( 'post_status' );

    と書いて post_status を WP::$publice_query_vars の一員にしてあげれば、
    http://www.example.com/wp/sub/?sky=%E6%99%B4%E3%82%8C&post_status=inherit
    というようなリンクで動作するようになります。

    とはいうものの、どこかで副作用があるかもしれないので
    ご自身の責任において、十分に調査・検証・納得した上でご利用ください。

    トピック投稿者 nobita

    (@nobita)

    kzさん 
    いつも、ありがとうございます。

    とても、参考になりました

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「画像のタクソノミ追加で、not foundなリンク」には新たに返信することはできません。