• 解決済 webarton

    (@webarton)


    こんばんは、いつもお世話になります。
    「カテゴリーの編集」や、「タグの編集」の「説明」に、メディアライブラリにある画像を挿入できるようにしたいと思っています。
    つまり、投稿やページにあるような「画像の追加」機能をつけたいのですが、どうしたらよいでしょうか。

    プラグイン「Category Description Editor」を入れることで、画像を挿入できることはわかったのですが、このプラグインはvisual editorを使えるようにするプラグインで、投稿やページにある「画像の追加」の機能が備わる訳ではない、とわかりました。

    探していたら、別プラグイン「カスタムフィールドテンプレート」のページで、「メディアライブラリからファイルを選択できる mediaPicker 属性を file タイプに追加。」と拝見したので、mediaPickerというのを検索してみたのですが、どう使えばよいのかわかりませんでした。

    どなたかプラグインや、修正方法などアドバイス頂けないでしょうか。
    よろしくお願い致します。

14件の返信を表示中 - 1 - 14件目 (全14件中)
  • Category Meta plugin
    http://wordpress.org/extend/plugins/wp-category-meta/

    説明には挿入されませんが、カテゴリーのメタ情報(追加情報)を設定できます。
    Text,Textarea,Image を選択できます。

    トピック投稿者 webarton

    (@webarton)

    pluto1234さん、orangemintさん、ありがとうございます!

    pluto1234さん、Category Meta pluginを入れてみました。imageを選択したら、メディアライブラリから選択できたので、ワーイ!と思ったらなぜかそれを保存できなかったのです。テキストだと保存できました。私のやり方がおかしいのかもしれません。

    今まで「説明」エリアを改造することばかり考えていましたが、pluto1234さんに教えて頂いたことで、カスタムフィールドみたいに追加情報を設定することでも解決できたらいいなと思ったので、もう少し調べてみます。ありがとうございます。

    orangemintさん、Rich Category Editorも試してみたのですが、Category Description Editorと動作が同じようでした。もう少し探してみます。ありがとうございます。

    ちょうど同じようなことをやる案件が本日出たのでサンプルで使ってみました。
    Category Meta plugin
    にて、画像 url がメタ情報として設定できました。

    動作はするようです。という報告のみですみません。

    Category Meta plugin 使ってみました。
    画像 image 、テキスト text として、きちんと保存されました。
    テーマには

    <?php $categoryArray = get_the_category($post->ID);
    $thisCat = $categoryArray[0]->term_id; if(function_exists('get_terms_meta')) {
    $image = get_terms_meta($thisCat, 'image');
    $image = $image[0];
    $text = get_terms_meta($thisCat, 'text');
    $text = $text[0];
    } ?>
    <img src="<?php echo ($image); ?>" width="100" height="100" alt="<?php echo ($text); ?>" />

    で、表示できました。これ、便利そうですね。

    トピック投稿者 webarton

    (@webarton)

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

    あ!と思って、Category Description Editorをオフにして、
    Category Meta plugin で画像を再選択してみたら、私も設定できました。

    pluto1234さん、できました。ありがとうございます。

    でも、Category Description Editorをオフにしてしまうと、visual editorが使えたのに使えなくなってしまうので、悩ましいです。

    トピック投稿者 webarton

    (@webarton)

    orangemintさん、テーマへの書きかたまで!ほんとにありがとうございます!
    書いて頂いた書き方で表示できました。

    どちらかというと、Visual Editorよりも画像が選択しやすいことが優先なので、Category Description Editorの共存はあきらめようかなあ・・・と思います。

    実は今、カスタムタクソノミーでは、このCategory Meta pluginが表示されていないことに気付き、衝撃を受けているところです。Category Metaの設定画面ではカスタムタクソノミーの名前が選べるのですが、カスタムタクソノミーの編集画面では表示されませんでした。

    Custom Post Type UIを使って、階層型タクソノミーを本のジャンル、非階層型タクソノミーを著者名にして、アーカイブの上部に著者の写真+略歴を表示できたらいいなと思っているのですが、実現するにはCategory Meta pluginをもっと理解しないとだめですよね・・・
    引き続き考えます。

    とりあえず、wp-category-meta.php の

    if($wp_version >= '3.0') {
        add_action('created_term', 'wptm_save_meta_tags');
        add_action('edit_term', 'wptm_save_meta_tags');
        add_action('delete_term', 'wptm_delete_meta_tags');
      :
    } else {
      :
    }

    の部分を

    http://wordpress.org/support/topic/plugin-category-meta-plugin-custom-taxonomies-fix-for-wp-30

    のコードに置き換えると、タクソノミーでも使えるようになるようです。

    「タクソノミーでも何やら表示されるぞ」というところまでしか確認していません。正しく使えるかどうかまでは確認していません。

    トピック投稿者 webarton

    (@webarton)

    おはようございます、
    pluto1234さん、ほんとにありがとうございます!

    教えて頂いたURLのコードにしたら使えるようになりました!
    表示もできました★嬉しいです!ありがとうございました♪

    もっとよい書き方があると思いますが、タクソノミーではこのように書きました。

    <?php
    $term = get_term_by(
        'slug',
        get_query_var('term'),
        get_query_var('taxonomy')
    );
    $thisCat = esc_html($term->term_id);
    $image = get_terms_meta($thisCat, 'Category Metaの設定画面でつけたMeta Name');
    $image = $image[0];
    $text = get_terms_meta($thisCat, 'Category Metaの設定画面でつけたMeta Name');
    $text = $text[0];
    $textarea = get_terms_meta($thisCat, 'Category Metaの設定画面でつけたMeta Name');
    $textarea = $textarea[0];
     ?>
    <img src="<?php echo ($image); ?>" width="100" height="100" alt="<?php echo ($text); ?>" />
    <p><?php echo ($text); ?></p>
    <p><?php echo ($textarea); ?></p>

    解決済みで余計なお世話ですが、
    $image = $image[0];
    $text = $text[0];
    $textarea = $textarea[0];
    この辺は不要なのでは?

    >$thisCat = esc_html($term->term_id);
    $term->term_id は、が整数型なので、esc_html はいらないと思います。

    ※セキュリティの大家が書いたどこかの記事で、「整数型も信頼は出来ない」と見た記憶がありますが、私には理解できませんでした。
    もしかして、$term->term_id の代入元が(何かの間違いで)文字列なら、$term->term_id も整数型にはならないということかもしれませんが・・。

    トピック投稿者 webarton

    (@webarton)

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

    なるほど、esc_html は不要なのですね。はじめ値が取れなくて、
    わからなくて色々やっているときにつけてしまったのですが、
    よけいなものは外したいので、外せて嬉しいです。ありがとうございます★

    $image = $image[0];
    $text = $text[0];
    $textarea = $textarea[0];
    この部分は、外してしまうとArrayと表示されてしまうので、
    そのままにしていますが、他に書き方がないか考えます。
    ありがとうございます。

    想像ですが

    例として、後ろの方に
    <p><?php echo ($text); ?></p>
    という箇所があるので、そこを
    <p><?php echo ($text[0]); ?></p>
    とすれば、最初の配列を代入しなくて済むのでは?ということじゃないですかね?

    可視性はこのくらいならどちらでも・・・という感じでしょうか。

    --以下余談--
    ただ可視性というか、変数の使い方といいましょうか

    $image = get_terms_meta($thisCat, 'Category Metaの設定画面でつけたMeta Name');
    $image = $image[0];

    この部分を、このままの形で使うなら

    $images = get_terms_meta($thisCat, 'Category Metaの設定画面でつけたMeta Name');
    $image = $images[0];

    としたほうがスマートな気がします。

    >この部分は、外してしまうとArrayと表示されてしまうので、
    >最初の配列を代入しなくて済むのでは?ということじゃないですかね?
    失礼しました。浅はかでした。get_terms_meta()は配列が返ってくのですね。
    下記のコードを見て、配列でない変数が返ってくるのだと思い込んでしまいました。

    $metaValue = get_terms_meta($category_id, $meta_key);
    $metaList = get_all_terms_meta($category_id);

    トピック投稿者 webarton

    (@webarton)

    kvexさん、pluto1234さん、ありがとうございます!
    お二人がご指摘下さった件、とても勉強になりました。

    代入せずそのまま使うことにするか、変数の使い方を教えて頂いたように変更するか、という部分、今回以外の時にも気をつけていきたいと思います。

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

14件の返信を表示中 - 1 - 14件目 (全14件中)
  • トピック「「カテゴリーの編集」の「説明」にメディアライブラリにある画像を挿入」には新たに返信することはできません。