サポート » 使い方全般 » wp_dropdown_categoriesを使ったタクソノミー一覧表示

  • 解決済 sohma

    (@sohma)


    始めまして。

    ただ今、外部投稿フォームからの記事登録できるページを作成中なのですが、
    カスタム分類名’salescategory’のターム一覧をdropdownで表示させ、選択できるようにしたいのですが、表示させたい部分に『<?php wp_dropdown_categories(‘taxonomy=salescategory’); ?>』というコードを書いたところ、過去に投稿で使ったことのあるタームは表示されるのですが、投稿記事が0の状態だと、タームが表示されません。記事が0でも、表示させるためにはどうしたら良いのでしょうか?

    またそのカスタム分類をfunction.phpへpostした後、記事に反映させる為にはどのようなコードを書けばいいのでしょうか?

    他のカスタムフィールド等のフォームは上手くいったのですが、カスタム分類だけ、うまくいきません。すみませんがよろしくお願い致します。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • モデレーター jim912

    (@jim912)

    hide_empty の指定をして下さい。

    テンプレートタグ/wp dropdown categories

    タクソノミーの登録には、wp_set_object_terms を利用します。

    jim912さん

    ありがとうございます!無事表示することができました。

    しかし、タームを記事に割り当てることが上手く行きません。。。

    wp_set_object_terms($id, array(intval($_POST[‘sellscategory’])), ‘sellscategory’);

    としているのですがどこかまちがっているでしょうか?

    モデレーター jim912

    (@jim912)

    該当記述内には、間違いはなさそうです。
    wp_set_object_terms の返値や、引数の内容がどのようになっているか確認してください。

    jim912さん

    返信ありがとうございます。

    なかなか解決しません。

    フォーム側がおかしいのでしょうか?
    『 <td><?php $args = array(
    ‘hide_empty’ => 0,
    ‘taxonomy’ => ‘sellscategory’,
    ); ?>
    <?php wp_dropdown_categories( $args ); ?>
    </td>』

    function側も載せます。

    『function _my_sellsentry(){
    global $sellsentry_error;
    if(is_page(‘sellsentry2’)){
    //フォームから送信されたかチェック
    if(isset($_POST[‘_wpnonce’]) && wp_verify_nonce($_POST[‘_wpnonce’], ‘sellsentry_’.get_current_user_id())){
    //ここまできたらセキュリティOK
    if(!isset($_POST[‘title’]) || empty($_POST[‘title’])){
    $sellsentry_error[] = ‘タイトルが空白です’;
    }
    //エラーが無かったら投稿を追加
    if(empty($sellsentry_error)){
    $id = wp_insert_post(array(
    ‘post_title’ => (string)$_POST[‘title’],
    ‘post_status’ => ‘publish’,
    ‘post_author’ => get_current_user_id(),
    ‘post_type’ => ‘sells’,
    ), true);

    //データの挿入に成功していたら移動
    if(!is_wp_error($id)){
    wp_set_object_terms($id, array(intval($_POST[‘sellscategory’])), ‘sellscategory’);
    //カスタムフィールド追加
    update_post_meta($id, ‘seisansya’, $_POST[‘seisansya’]);
    update_post_meta($id, ‘teikyoujiki’, $_POST[‘hanjiki’]);
    update_post_meta($id, ‘hanbairyou2’, $_POST[‘foo’]);
    update_post_meta($id, ‘hanbairyou’, $_POST[‘hansize’]);
    update_post_meta($id, ‘sekininsya’, $_POST[‘sekininsya’]);
    update_post_meta($id, ‘kakaku2’, $_POST[‘ckaka’]);
    update_post_meta($id, ‘kakaku’, $_POST[‘hankakaku’]);
    update_post_meta($id, ‘seisanti’, $_POST[‘seisanti’]);
    update_post_meta($id, ‘tane’, $_POST[‘tane’]);
    update_post_meta($id, ‘taihi’, $_POST[‘taihi’]);
    update_post_meta($id, ‘tokutyou2’, $_POST[‘tokutyou2’]);
    update_post_meta($id, ‘tokutyou’, $_POST[‘tokutyou’]);
    update_post_meta($id, ‘yuukoukigen’, $_POST[‘kigen’]);
    update_post_meta($id, ‘keisaibi’, $_POST[‘keisaibi’]);
    update_post_meta($id, ‘message’, $_POST[‘message’]);
    update_post_meta($id, ‘adresszip1’, $_POST[‘zip1’]);
    update_post_meta($id, ‘adresszip2’, $_POST[‘zip2’]);
    update_post_meta($id, ‘adress1’, $_POST[‘prefecture’]);
    update_post_meta($id, ‘adress2’, $_POST[‘address’]);
    update_post_meta($id, ‘tell1’, $_POST[‘tell1’]);
    update_post_meta($id, ‘tell2’, $_POST[‘tell2’]);
    update_post_meta($id, ‘tell3’, $_POST[‘tell3’]);
    update_post_meta($id, ‘fax1’, $_POST[‘fax1’]);
    update_post_meta($id, ‘fax2’, $_POST[‘fax2’]);
    update_post_meta($id, ‘fax3’, $_POST[‘fax3’]);
    update_post_meta($id, ‘mail’, $_POST[‘email’]);
    update_post_meta($id, ‘url’, $_POST[‘url’]);
    update_post_meta($id, ‘sotial1’, $_POST[‘sotial1’]);
    update_post_meta($id, ‘sotial2’, $_POST[‘sotial2’]);
    update_post_meta($id, ‘time’, $_POST[‘eigyoujikan’]);
    update_post_meta($id, ‘siharai’, $_POST[‘siharai’]);
    update_post_meta($id, ‘cansel’, $_POST[‘cancel’]);
    update_post_meta($id, ‘henpin’, $_POST[‘henpin’]);
    update_post_meta($id, ‘haisou’, $_POST[‘method’]);
    update_post_meta($id, ‘souryou2’, $_POST[‘souryou2’]);
    update_post_meta($id, ‘souryou’, $_POST[‘souryou’]);
    //ページを移動
    header(‘Location: ‘.get_permalink($id));
    die();
    }else{
    $create_wants_error[] = ‘エラーが発生しました’.$id->get_error_message();
    }
    }
    }
    }
    }  』

    そして出力側です。

    『 <div id=”selltable2″>
    <h2><?php wp_title(”); ?></h2><p><span class=”hinsyu”><?php the_terms( $id, ‘sellscategory’ ); ?></span></p>
    <h2>生産者:<?php echo post_custom(‘seisansya’); ?></h2>  』

    すみませんがよろしくお願い致します。

    すみません、どなたかアドバイスいただけないでしょうか??

    モデレーター jim912

    (@jim912)

    $_POST[‘sellscategory’] の値は想定通りのものになっていますか?

    jim912さん

    ありがとうございます!!!

    どうやら、array(intval($_POST[‘sellscategory’]))の部分がおかしいようです。
    上手くタームを取得できていません。。。

    ここをタームのスタッグ、例えば’yasai’などにすると、ターム、野菜類が表示されます。

    上記の記述は間違っているのでしょうか?

    sellscategoryの部分はカスタムタクソノミーのスラッグ名でいいんでしょうか?

    モデレーター jim912

    (@jim912)

    wp_dropdown_categories で出力されているhtmlがどのようになっているか確認してみてはいかがでしょうか。

    jim912さん
    ありがとうございます!

    無事jim912さんのアドバイス通り、ソースを確認したところ,
    selectのnameが間違っていました。とても助かりました!!

    本当にありがとうございます。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「wp_dropdown_categoriesを使ったタクソノミー一覧表示」には新たに返信することはできません。