2点ご確認ください。
1.上記コードがループ内に書かれているかという点
2.$img_urlをechoしているかどうか
ikaring様
ご返信をありがとうございました。
1番目のループ内かどうかは、ループ内です。
2番目のは、勉強不足でよく分かりません。
申し訳ありません。
現在は何も表示しない状況です。
宜しくお願いいたします。
参考にされたページの最後のコード内に
<?php echo $img_url; ?>
という箇所があります。
$img_url
という変数に入っている内容を画面に書き出す(echo)というような命令です。
これがないと何も表示されないと思います。
ikaring様
ありがとうございます。
ご指摘の
<?php echo $img_url; ?>
を入れたところ、7つギャラリーの投稿があるうちの、
新しい投稿から3番目のギャラリーのみ、表示されました。
どういうことでしょうね。
先ほどのコードの上に
<?php the_title(); ?>
を入れると7件のタイトルは表示されますか?
ループがどうなっているのか、見せていただいた方が良いですかね。
あと、画像はすべてjpgなのかなど。もしPNGとかも混じっていているのであれば、&post_mime_type=image/jpeg
は取ったほうがいいかもしれません。
$files = get_children('post_parent=' . $post->ID . '&post_type=attachment');
7件取得出来ているかはvar_dump($files);
した方が手っ取り早いかも。
ID順(アップロード順)にギャラリーに挿入していない場合、配列内の順番が実際に挿入した順番とは異なりますし、また他の投稿にも試用していたりするなど、親子関係が保存されていなかったりするメディアの場合これでは取得されません。
なるほど、そういうことがあるんですね。勉強になります。
galleryショートコードのid要素からIDを取得してget_postsするという、下記ページのコードがあったのですが、これならいけそうですかね?
4番目の投稿ので、コメントに書かれていることも加味して少し手を入れたほうが良さそうですが。
http://wordpress.stackexchange.com/questions/89307/wordpress-grab-first-image-from-gallery
もっと良い方法があるでしょうか。
ikaring様
Hinaloe様
ご丁寧な回答をありがとうございます。
<?php the_title(); ?>
は、既に入れてあり、問題なく表示されております。
<ul class="upall">
<?php if(have_posts()): ?>
<?php while(have_posts()): the_post(); ?>
<li class="pa_clume">
<p class="al_title"><?php the_title(); ?></p>
<p class="mini_showphoto"><a href="<?php the_permalink(); ?>"><img src="<?php bloginfo('template_url'); ?>/images/but_showthephoto.png"></a></p>
<?php
$files = get_children('post_parent=' . $post->ID . '&post_type=attachment&post_mime_type=image/jpeg');
$keys = array_keys($files);
$num = $keys[0];
$img_url = wp_get_attachment_image($num, 'medium');
?>
<?php echo $img_url; ?>
</li>
<?php endwhile; ?>
<br class="clear">
<?php else: ?>
現在記事はありません
<?php endif; ?>
</ul>
コードはこんか感じです。
検証できてないですけど、こんな感じでどうでしょうか。
<ul class="upall">
<?php if(have_posts()): ?>
<?php while(have_posts()): the_post(); ?>
<?php
// helper function to return first regex match
// この関数はfunctions.phpとかにあったほうがいいのかな
function get_match( $regex, $content ) {
preg_match( $regex, $content, $matches );
return $matches[1];
}
// Extract the shortcode arguments from the $page or $post
$shortcode_args = shortcode_parse_atts( get_match( '/\[gallery\s(.*)\]/isU', $post->post_content ) );
$ids = explode( ',' , $shortcode_args[ "ids" ]);
$img_url = wp_get_attachment_image( $ids[0], 'medium' );
?>
<li class="pa_clume">
<p class="al_title"><?php the_title(); ?></p>
<p class="mini_showphoto"><a href="<?php the_permalink(); ?>"><img src="<?php echo get_stylesheet_directory_uri(); ?>/images/but_showthephoto.png"></a></p>
<?php echo $img_url; ?>
</li>
<?php endwhile; ?>
<br class="clear">
<?php else: ?>
現在記事はありません
<?php endif; ?>
</ul>
標準のgalleryを使用している場合なら、或いはgallery_shortcode
内のどっかのフィルターに引っ掛けてIDを取り出せるようにすることも……どこに引っ掛けるかだとかどう書くかとかは考えてないけど難しくはなく出来そう。
Home
こんにちは
画像数の取得や、アタッチメントIDの取得 よろしければ 以下のようなやり方でも出来そうでした。
http://tenman.info/labo/snip/archives/7261