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

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

ただいまの
回答率

87.34%

wordpressテンプレートでの画像表示(phpのバージョンアップ後問題発生)

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 613
退会済みユーザー

退会済みユーザー

leafというwordpressプラグインで制作しています。

phpのバージョンアップをしてから下記のコードの部分の表示がおかしくなりました。

<?php  $postImage = getPostImage($post);
if($postImage == null){
// 画像が無い場合の処理
}else{
echo '<img class="img-responsive" alt="'.$postImage["alt"].'"
src="'.$postImage["url"].'" />';
} ?>

もともと記事ないの最初の画像が表示されるようになっていました。

1つめの記事は前と変わらず表示されますが、2つめ以降画像が表示されなかったり、別の関係のない画像が表示されます。

わかる方いましたらよろしくお願いします。

functions.phpの記述です。

//投稿の一枚目画像を取得する
function getPostImage($mypost){
    if(empty($mypost)){ return(null); }

    if(preg_match('<img([ ]+)([^>]*)src\=["|\']([^"|^\']+)["|\']([^>]*)>',$mypost->post_content,$img_array)){

        // imgタグで直接画像にアクセスしているものがある
        $dummy=preg_match('<img([ ]+)([^>]*)alt\=["|\']([^"|^\']+)["|\']([^>]*)>',$mypost->post_content,$alt_array);
        $resultArray["url"] = $img_array[3];
        $resultArray["alt"] = $alt_array[3];

    }else{

        // 直接imgタグにてアクセスされていない場合は紐づけられた画像を取得
        $files = get_children(array('post_parent' => $mypost->ID, 'post_type' => 'attachment', 'post_mime_type' => 'image'));
        if(is_array($files) && count($files) != 0){
            $files=array_reverse($files);
            $file=array_shift($files);
            $resultArray["url"] = wp_get_attachment_url($file->ID);
            $resultArray["alt"] = $file->post_title;
        }else{
            return(null);
        }
    }
    return($resultArray);
}
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    退会済みユーザー

    2019/10/31 19:50

    402 | WARNING | Use of deprecated PHP4 style class constructor is not supported since PHP 7.
    482 | WARNING | Function create_function() is deprecated since PHP 7.2; Use an anonymous function instead
    485 | WARNING | Use of deprecated PHP4 style class constructor is not supported since PHP 7.
    532 | WARNING | Function create_function() is deprecated since PHP 7.2; Use an anonymous function instead

    エラーはでできませんが、warningは出ます。

    キャンセル

  • CHERRY

    2019/10/31 20:03 編集

    PHPのアップデート前のバージョンとアップデート後のバージョンは、いくつでしょうか?

    また、Webサーバのログにエラーがないかも確認して見てください。

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2019/11/01 18:40

    エラーログはありません。現在PHP 7.3.9です。前回のは忘れてしまいましたが、6.なんぼかでした。

    キャンセル

回答 2

check解決した方法

0

解決しなかったので、別の方法で画像を出すことにしました。ありがとうございます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

とりあえず...

下記のコードの部分の表示がおかしくなりました。
もともと記事ないの最初の画像が表示されるようになっていました。
1つめの記事は前と変わらず表示されますが、2つめ以降画像が表示されなかったり、別の関係のない画像が表示されます。

のすべての現象と一致しないように思うのですが、質問に記載されたコードを見ると

// 画像が無い場合の処理                                                                            

}else{

が、

// 画像が無い場合の処理                                                          }else{ 

のように1行につながっていて、  } else { が、コメントになって無視されているように見えるのですが、これは、質問にコードを貼り付けたときの貼り付けミスでしょうか?

この else がコメントになっているコードだと $postImage が null の時に img タグを出力することになるので、画像があっても img タグが出力されなくて、画像が表示されないのではないかとは思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/10/31 19:43

    確認したところ貼り付けミスでした(_ _)
    申し訳ありません。

    キャンセル

  • 2019/10/31 20:02

    了解です。

    キャンセル

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

  • ただいまの回答率 87.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る