質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

1回答

1420閲覧

WordPressで画像をアップロードする際の動作について

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2017/05/05 14:58

編集2017/05/06 09:11

お世話になります。

自分なりに色々調べて考えてみたのですが、まったく分からないのでアドバイスをください。

WordPressで画像をアップロードする際にmeta_keyにwidth、heightを付与してmeta_valueに画像サイズを自動登録しています。
また、タクソノミーを使用して画像をカテゴリ分けしているのですが、このmeta_valueの値を利用して画像アップロード時に
特定の高さの画像だけ特定のカテゴリに自動登録させたいと考えています。
もう少し具体的には、高さが800pxの画像は全てカテゴリAに自動登録するような寸法です。

そもそも、画像をアップロードする際にそのような事が可能かどうかも分からない状態なのですが、
画像アップロード時にそのような動作が可能なフィルターフック等があればお教えください。
また、参考になるようなサイト等があれば併せてお願いします。

以上、よろしくお願い致します。

追記です。
投稿時のサイズの登録は以下のようにしています。

function add_media_meta($meta, $post_id){ update_post_meta($post_id, 'height', (int) $meta['height']); update_post_meta($post_id, 'width', (int) $meta['width']); return $meta; } add_filter('wp_generate_attachment_metadata', 'add_media_meta', 10, 2);

この方法では調べた限りでは term_taxonomy_id等は扱えないようですね?

そこで別途考えてみたのが以下ですが

function hogehoge($post_id) { $meta_height = $_POST[height]; if(!empty($_POST['publish']) && $meta_height == 800){ $post_id = wp_set_object_terms( $post_id, 37, 'attachment_category', true ); } } add_action('save_post', 'hogehoge');

まったく思い通りに動きません(;^_^A
分からないなりに考えたのが
投稿時に height が 800 の meta_value があれば 画像の term_id 及び term_taxonomy_id に 37 をセットする、
なんですが、何か違うようです。

以下であれば投稿時に画像サイズは無関係でID37がセットされましたが、趣旨が違うのですよね…

function add_media_term($post_id){ wp_set_object_terms($post_id, 37, 'attachment_category', true); } add_action('add_attachment', 'add_media_term', 99, 1);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/06 04:10

「WordPressで画像をアップロードする際に(略)自動登録しています。」ということであれば、自動登録をしている関数内にカテゴリ登録をする処理を追加すればいいのではないですか。
退会済みユーザー

退会済みユーザー

2017/05/06 09:11

ご回答ありがとうございます。 試してみた事を追記致しました。
guest

回答1

0

ベストアンサー

height が 800 のときに term_id 37 を画像に付与する、であれば下記のようになりませんか?

PHP

1function add_media_meta( $meta, $post_id ) { 2 update_post_meta( $post_id, 'height', (int) $meta['height']); 3 update_post_meta( $post_id, 'width', (int) $meta['width']); 4 if ( $meta['height'] == 800 ) { 5 wp_set_object_terms( $post_id, 37, 'attachment_category', true ); 6 } 7 return $meta; 8} // 未テスト 9add_filter('wp_generate_attachment_metadata', 'add_media_meta', 10, 2);

投稿2017/05/06 15:29

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/06 16:16

ご回答ありがとうございます。 バッチリ思惑通りの動作致しました。 とりあえず全く分からなかったので何でも良いのでアドバイスを頂ければと思いながらも 分からないなりに試した事が少し正解に近かったようで無駄ではなかったと安心しました。 ただ、save_postとか使わないと駄目なんじゃないだろうか…とかあれこれ試行錯誤して 試したものが全然動かないので細かい挙動を探った結果 save-attachment-compat とか出てきて どんどん深みにはまって行きかけの状態でした(;^_^A 助けていただいてどうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問