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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

447閲覧

wordpressでタイトルに特定の文字列が含まれた画像を一覧取得したい。

dstrykn

総合スコア20

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/01/05 07:30

wordpressでタイトルに特定の文字列「abc」が含まれた画像を一覧取得したいのですが、うまく動作してくれません。

画像名は(abc_1.jpg,abc_2.jpg,abc_3.jpg,abc_4.jpg)のような感じで想定しており、
固定ページでテンプレート(page-products.php)を選択して使用しようと考えています。

<?php $attachments = get_children(array('post_type' => 'attachment', 'post_mime_type' => 'image')); if(!empty($attachments)){ foreach($attachments as $attachment){ if($attachment->post_title == 'abc') { wp_get_attachment_image( $attachment->ID, $size, $icon, $attr ); $imgid = $attachment->ID; } } } ?> <?php echo wp_get_attachment_image($attachment->ID); ?>

abc_1.jpgを取得できずに、toptop-150x150.pngという全然関係ない画像を1件取得してしまいます。

コードは下記のサイトを参考にさせていただきました。
https://geek-memo.com/media-lib/

画像のアップを簡単にさせたいのが目的なので、もしこの方法が難しければ他の方法でも構わないのでアドバイスいただければ助かります。
宜しくお願い申し上げます。

wordpress、phpに詳しい方助けていただけないでしょうか。
宜しくお願い申し上げます。

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

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

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

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

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

guest

回答2

0

ベストアンサー

post_titleに特定の文字を含む画像を探して絞り込む』ってカスタムフィールドでも使わなければ通常の方法じゃ無理じゃないでしょうか。

手間をかけたくなければデータベースを直接叩くのが得策だと思います。

例:
値の有無とポストタイプを加味してなかったのでコードを訂正。

<?php global $wpdb; $attachments = $wpdb->get_results( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_type = 'attachment' and post_title like '%%%s%%';", 'abc' ) ); if( !empty( $attachments )) { foreach( $attachments as $attachment ) { echo wp_get_attachment_image( $attachment->ID ); } } ?>

投稿2019/01/05 15:50

編集2019/01/12 05:55
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

dstrykn

2019/01/10 12:11

ご回答ありがとうございます。 返信が遅くなりごめんなさい。カスタムフィールドでできるんですね! カスタムフィールドを使ったことはあるのですが、(テキスト、画像の入力欄を追加など)やりたいことがどのようにすれば実現できるのかわからないので教えてもらえないでしょうか。 例で書いていただいたコードはどのように使えばいいのでしょうか。phpがわからないのでアドバイス頂けないでしょうか。よろしくお願いします。
退会済みユーザー

退会済みユーザー

2019/01/12 05:54

回答に返答しても尚、解決できないのなら理解できるが、自分で放置して「まだ回答を求めています」はおかしいだろ? 返答もしないで自分で放置したのに、いかがなものか? あと、「ごめんなさい」という言葉は相応しいかい? この場合、貴方は教えてもらう立場だろ? 質問者が放置した「挙句に「ごめんなさい」っどう? とりあえず質問する前に世間一般常識を学んでから出直したらどうか。 「ごめんなさい」という言葉が無性に腹が立つ。 >どのように使えばいいのでしょうか テンプレートを編集してるんだからテンプレートに書くんでしょうが。
dstrykn

2019/01/13 01:54

せっかくご回答頂いたにも関わらず、ご気分を害してしまい、申し訳ございません。 「ごめんなさい」という言葉は不適切でした。重ねてお詫び申し上げます。 コードは、私が書いたコードに対する回答か、ご提案頂いたカスタムフィールド に関するものか、データベースに関するものか、私の理解力が至らないため、目的がわからなかったので質問をさせていただきました。
退会済みユーザー

退会済みユーザー

2019/01/13 09:52

手間をかけたくなければデータベースを直接叩くのが得策だと思います。 と書きました。 手間をかけずに【wordpressでタイトルに特定の文字列が含まれた画像を一覧取得したい】を実現するズバリの事を書いたつもりです。 実際にやってみれば分かるのでは?
dstrykn

2019/01/15 18:59

やりたかったことができました。本当にありがとうございました。
guest

0

画像のアップを簡単にさせたいのが目的

カスタムフィールド系のプラグインを使用されてはいかがでしょう。
提示のコードの問題は取得した値を特に使用していないところです。

PHP

1// ↓ 特にpost_parentを指定していないので全体からアタッチメント画像を取得している 2$attachments = get_children(array('post_type' => 'attachment', 'post_mime_type' => 'image')); 3if(!empty($attachments)){ 4 foreach($attachments as $attachment){ 5 if($attachment->post_title == 'abc') { // ← タイトルがabc完全一致のみ 6 echo wp_get_attachment_image( $attachment->ID, $size, $icon, $attr ); // wp_get_attachment_imageはechoしないので、変数にいれて使うかechoする 7 $imgid = $attachment->ID; // 上も含めて例示用に書かれているだけなので、使わないなら不要 8 } 9 } 10}

【Advanced Custom Fields | WordPress.org】
https://ja.wordpress.org/plugins/advanced-custom-fields/

【Smart Custom Fields | WordPress.org】
https://ja.wordpress.org/plugins/smart-custom-fields/

【Custom Field Suite | WordPress.org】
https://ja.wordpress.org/plugins/custom-field-suite/

【get_children – WordPress私的マニュアル】
https://elearn.jp/wpman/function/get_children.html

投稿2019/01/05 07:47

kei344

総合スコア69407

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

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

dstrykn

2019/01/05 09:20

ご返信ありがとうございます。 ◯カスタムフィールド系のプラグインを使用するというのは、1)画像のアップ→2)表示したい画像を選択→3)公開、の手順でする必要がございますか。 それとも元々やりたかった、特定の文字列「abc」が含まれた画像を一覧取得も実装できるのでしょうか。 できれば、特定の文字列「abc」が含まれた画像を一覧取得を実装したいのですが.... ◯コードのコメントに関してお伺いいたします。 "特にpost_parentを指定していないので全体からアタッチメント画像を取得している" >>post_parentは何を指定すればよろしいのでしょうか? "タイトルがabc完全一致のみ" >>完全一致を部分一致にする必要があったんですね。strposは使えますでしょうか。下記のサイトを参考にさせていただきました。 https://blog.simmon.design/check-if-a-string-contains-a-specific-character-in-php/ お手数をお掛けいたしますが、教えてください。よろしくお願い申し上げます。
kei344

2019/01/05 09:31

> 手順 そうなります。 「特定の文字列「abc」が含まれた画像を一覧取得」はユーザーがアップロードしないのですか? 現在のコードはアタッチメントが有効になったテーマで、誰かがアップロードする必要がなりますよ。 なので、固定ページに複数の画像アップロードフォームを追加するほうが簡単かな、と思ったのですが。 変わらない画像なのであればその画像をそのまま表示すればよいような。
dstrykn

2019/01/05 15:35

ご返信ありがとうございます。 「元々やりたかった、特定の文字列「abc」が含まれた画像を一覧取得」であれば、2)表示したい画像を選択→3)公開、の手順を省けるかと思ったのですが、やはり難しいのでしょうか....
kei344

2019/01/05 15:44

「特定の文字列「abc」が含まれた画像」が増えないのであれば、カスタムフィールドでセレクトボタンなりラジオボタンを作って出し分けるほうが良いと思います。 アップロードを誰がして、誰の手間を減らしたいかがわかりません。エンドユーザーにアップロードもさせるなら変な組み方といわざるを得ません。(かえってエンドユーザーに難しい)
dstrykn

2019/01/10 12:17

ご回答ありがとうございます。 返信が遅くなりごめんなさい。お勧めいただいたカスタムフィールドはSpace-Monkeyさんが想定されている内容と同じでしょうか? カスタムフィールドは使ったことがあるのですが、機能について理解できていないのかもしれません。 やりたかったことは「abc」が含まれた画像をアップロードするだけで、ページに勝手に反映されるようなイメージでした。(画像の選択、公開の手順が必要なく簡単かと思いました) 工程がアップロードだけなので、エンドユーザーが楽かなと思ったのです。画像はどんどん増やしていきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問