2

これは、配列に最後に挿入されたアイテムのインデックスを取得するPHPと重複する可能性があると言うでしょう。

しかし、私は自分の関数を機能させることを試みましたが成功しませんでした。その理由を理解しようとしています。

Wordpressの投稿内容からサムネイル添付ファイルを取得する機能があります。

画像が1つしかない投稿ではコードは正常に機能しますが、投稿に複数の画像がある場合は、から最初の画像が正しく表示されますが、arrayなぜ画像が逆に保存されるのかわかりません。最後に保存された投稿の最初の画像と最初に保存された最後の画像を意味します。私はこれがおそらくmediaWordpressの機能がどのように機能するかを推測しています。

とにかく、1つまたは複数の画像が保存されている場合でも、関数から最後に挿入されたデータを取得する必要がありますarray

// Get Image Attachments
function sa_get_image($postid=0, $size='thumbnail') { 
    if ($postid<1)
    $postid = get_the_ID();
    $thumb = get_post_meta($postid, "thumb", TRUE); 
    if ($thumb != null or $thumb != '') {
        echo $thumb;
    }
    elseif ($images = get_children(array( 
        'post_parent' => $postid,
        'post_type' => 'attachment',
        'numberposts' => '1',
        'post_mime_type' => 'image', )))
        foreach($images as $image) {
            $thumbnail=wp_get_attachment_image_src($image->ID, $size);
            ?>
    <?php echo $thumbnail[0]; ?> // here is the problem where the image display.
    <?php }

}
4

3 に答える 3

2

変更:
$thumbnail=wp_get_attachment_image_src($image->ID, $size);
から:
$thumbnail[] = wp_get_attachment_image_src($image->ID, $size);

$thumbnail = array()for-eachの外で宣言することを忘れないでください。

次に、次を使用できます(推奨):

echo end($thumbnail);

または次のようなもの:

echo $thumbnail[count($thumbnail)-1];

'最後の'付加値を取得したくない場合。または、または
を使用して最初の値を取得できます[0]first()


ここに追加できます(例):

$thumb = get_post_meta($postid, "thumb", TRUE); 
$thumbnail = array(); //<<<
if ($thumb != null or $thumb != '') {
于 2012-05-03T13:44:50.933 に答える
1

配列として$thumbnailにアクセスしていますが、foreach()内の変数を文字列であるかのように上書きしています。

変化する:

$thumbnail=wp_get_attachment_image_src($image->ID, $size);

 $thumbnail[]=wp_get_attachment_image_src($image->ID, $size); 

配列にすると、残りのコードが機能するはずです

AH

于 2012-05-03T13:43:59.687 に答える
0

私の解決策にはもっと簡単な方法があり、配列から最後のものを取得する方法は次のとおりです。

これを配列領域に追加するだけです。

'orderby' => 'menu_order',
'order' => 'ASC', //If reverse use DESC
于 2012-05-04T20:17:23.123 に答える