サポート » 使い方全般 » メディアにアップした画像全てを表示させたい。

  • 解決済 yunyun yunko

    (@ryuunosuke1018)


    固定ページで指定したテンプレートでメディアにアップロードした画像を全て一覧で表示し、画像が掲載されている記事のタイトルやカスタムフィールドに記述した文字も表示させたいのですが、

    何か参考になるサイトや方法はありますでしょうか?(プラグインなしで作りたいです。)

    CSSとhtmlの知識はそれなりにあります。

    • このトピックは yunyun yunkoが5 ヶ月前に変更しました。
    • このトピックは yunyun yunkoが5 ヶ月前に変更しました。
15件の返信を表示中 - 1 - 15件目 (全27件中)
  • kimipooh

    (@kimipooh)

    WordPressのギャラリー機能はだめでしょうか。
    参考:https://manablog.org/wordpress-gallery-plugin/

    これで不十分となると、データベースとPHPプログラミングの知識が必要かなと思います。
    (もしかして他の方法があるかもしれません、私が知らないだけで)

    まずメディアにアップロードされた画像のURL取得は
    https://www.webantena.net/wordpress/wp-get-attachment-url/
    あたりにサンプルがありますね。

    これで単に画像を一覧表示するならいけるかなと思います。
    ただし他の情報をいろいろ取りたいなら
    https://unskilled.site/wordpress%E3%81%A7%E7%94%BB%E5%83%8F%E3%81%AF%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AB%E8%A8%98%E9%8C%B2%E3%81%95%E3%82%8C%E3%81%A6/
    あたりのメディアデータがどのようにデータベースに保存されていて、これをどう WordPress から取り出すのかを考える必要があるかなと思います。

    データベースの wp_posts データから WP_Query 関数などを使って
    post_type=attachment
    post_mime_type=image
    の条件にマッチするデータを拾ってくれば、画像だけのデータは抜き出せるかなと思います。

    画像のIDさえわかれば、いろいろな関数があるので、それも使えるかもしれません。

    yunyun yunko

    (@ryuunosuke1018)

    ありがとうございます。ギャラリー機能も考えたのですが、投稿ページで画像つきで記事を投稿したら画像図鑑ページみたいなところに画像が追加されるみらいな事は可能なのでしょうか?教えていただいたサイトも参考にしてもう1度検索と勉強をしてみます。
    画像のIDも関数も調べてみます。

    nobita

    (@nobita)

    こんにちは、

    メディアファイルには、投稿に紐づいた画像 ファイル だけでなく、投稿に紐づいていない画像やメディアも存在します。

    画像が掲載されている記事のタイトルやカスタムフィールドに記述した文字も表示させたいのですが

    ということは、添付画像のアーカイブを作りたいということですか?

    であれば、カスタム投稿タイプ attachment から アーカイブ機能を有効にするなどといった事になるかもしれないですね。

    yunyun yunko

    (@ryuunosuke1018)

    ありがとうございます。

    そうです。添付画像のアーカイブを作りたいんです。
    アーカイブ機能の有効化ですか、調べてみます。
    カスタム投稿タイプは少し使った事があります。

    nobita

    (@nobita)

    こんな感じで、表示できるかも、

    
    add_filter( 'register_post_type_args', 'rd_change_default_post_type_args', 10, 2 );
    
    function rd_change_default_post_type_args( $args, $post_type ) {
    
    	if ( $post_type == 'attachment' ) {
    		
    		$args[ 'has_archive' ] = true;
    		$args[ 'rewrite' ]	 = array( 'slug' => 'attached' );
    	}
    
    	return $args;
    }
    
    add_action( 'pre_get_posts', 'rd_attachment_archve_post_status' );
    
    function rd_attachment_archve_post_status( $wp_query ) {
    
    	if ( !is_admin() && $wp_query->is_main_query() ) {
    
    		if ( !is_singular() && $wp_query->get( 'post_type' ) == 'attachment' ) {
    			
    			$wp_query->set( 'post_status', 'inherit' );
    		}
    	}
    }
    
    yunyun yunko

    (@ryuunosuke1018)

    ありがとうございます。試してみます。functionに追加すればいいのでしょうか?そして固定ページに表示したいのですが、出力はどのように記述すればよいのでしょうか?初心者なのに難しいことを質問してしまってすいません。

    • この返信は5 ヶ月前に  yunyun yunko さんが編集しました。
    nobita

    (@nobita)

    functions.php で OK

    これの場合は、わざわざ固定ページを作らなくても大丈夫です。

    たぶん サイトのURL/attached/ で表示できると思います。

    yunyun yunko

    (@ryuunosuke1018)

    ありがとうございます。サイトのURL/attached/にした場合、レイアウトやデザインなどはどうなってしまうのでしょうか?アーカイブのテンプレートをいじればいいのでしょうか?聞いてばかりですみません。

    yunyun yunko

    (@ryuunosuke1018)

    試してみました。アクセスしてみたところ「こちらには何もありません。検索をお試しください。」と出て画像はなにも表示されませんでした。こちらでも色々試したり調べてみます。

    kimipooh

    (@kimipooh)

    https://tenman.info/labo/snip/archives/8850
    と同じコードのような気がします。

    そこの注意事項をチェックしてみてはと思います。

    yunyun yunko

    (@ryuunosuke1018)

    ありがとうございます。見てみます。

    yunyun yunko

    (@ryuunosuke1018)

    画像を全て表示する事ができましたが、CSSなどはアーカイブテンプレートをいじればいいのでしょうか?

    また、このやり方だと画像を直接リンクしているのですが、そうではなく画像が添付してある記事に飛ぶようにはできないのでしょうか?

    私も鋭意調査しています。

    yunyun yunko

    (@ryuunosuke1018)

    アーカイブのテンプレートを変更したらCSSが反映されました。

    yunyun yunko

    (@ryuunosuke1018)

    何度もすみません。あと情報を小出しにしているようで申し訳ないのですが、

    一覧で表示したい画像は投稿記事に添付されたものだけにしたいのですが、可能でしょうか。

    kimipooh

    (@kimipooh)

    post_parent に親記事のIDが入っているかどうかの条件を加えたらどうかなぁと思います。

    		if ( !is_singular() && $wp_query->get( 'post_type' ) == 'attachment' ) {
    

    の部分を

    		if ( !is_singular() && $wp_query->get( 'post_type' ) == 'attachment' 
    			&&  ( isset($wp_query->get( 'post_parent' ))
    			      && is_single($wp_query->get( 'post_parent' ))
    			    )
    		   ) {
    

    な感じにしてみるとか

15件の返信を表示中 - 1 - 15件目 (全27件中)
  • このトピックに返信するにはログインが必要です。