44877
PHP初心者です。  
open graph imageを変更できなくて困っています。

・サイト全体で、head.phpと言う共有のファイルを読み込んでいる。そこには、og:imageのcontentについて下記のように記述されている。

```

    <?php if(file_exists(dirname(__FILE__).'OG用画像.jpg')) : ?>
    <meta property="og:image" content="<?php echo 　　　　location_file.'images/ogp.jpg'; ?>">
    <?php endif; ?>
    
```

・とあるページでは、上記共通の画像（'OG用画像.jpg'）ではなくて、別の画像を表示させたいが、設定の仕方がわからない。htmlのhead内に直接と記載しても反映されない。

そのページのソースをブラウザ上で表示すると、

```

    <meta property="og:image" content="OG用画像.jpg">
    
```

と

```

    <meta property="og:image" content="表示させたい画像">
    
```

が両方表示されている。

・facebookのdebuggerで表示されるのは、最初の「OG用画像.jpg」のみ  
アドバイスやご指摘、よろしくお願いいたします。

* * *

6/19 11:18 以下追記

コメントありがとうございます。  
ディレクトリに関しては、以下のような形になっています。

以下4つが同じディレクトリ内  
①index.php  
②templatesフォルダ  
`>` head.php  
③recruitmentフォルダ  
`>`index.php  
`>` position1.php（とあるページ）  
`>` imagesフォルダ > 表示させたい画像.jpg  
④images  
`>` OG用画像.jpg

> というのはどこで定義しているのでしょうか？

「どこで定義している」というのは、どのように回答すればよろしいでしょうか？  
contentの中には、[https://から始まる画像のURLを絶対パスで入力しています](https://%E3%81%8B%E3%82%89%E5%A7%8B%E3%81%BE%E3%82%8B%E7%94%BB%E5%83%8F%E3%81%AEURL%E3%82%92%E7%B5%B6%E5%AF%BE%E3%83%91%E3%82%B9%E3%81%A7%E5%85%A5%E5%8A%9B%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99)。  
OGの画像を変更したいとあるページ（position1.php）のphpファイルのheadタグ内に直接書き込んでいる状態です。

> とあるページは同じディレクトリ内に置いてあるものなのでしょうか？  
>
> とあるページのソースコードと置いてあるディレクトリ等（ディレクトリ名などは適当で構いません）を共有してい>ただければより詳しく考えることが出来るかと思います

head.phpのソースコードです。

```

    <!DOCTYPE html>
    <html class="<?php echo $htmlClass; ?>">
    <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# website:     http://ogp.me/ns/website#">
    <meta charset="utf-8">
    <title><?php echo $meta['title']; ?></title>
    <meta name="keywords" content="<?php echo $meta['keywords']; ?>">
    <meta name="description" content="<?php echo $meta['description']; ?>">
    <meta name="viewport" content="width=device-width, initial-scale=0.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
    <meta name="format-detection" content="telephone=no">
    <link rel="index" href="<?php echo location; ?>">
    
    <?php if(file_exists(dirname(__FILE__).'/../images/favicon.ico')) : ?>
    <!-- favicon -->
    <link rel="shortcut icon" href="<?php echo location_file.'images/favicon.ico'; ?>">
    <?php endif; ?>
    
    <?php if(file_exists(dirname(__FILE__).'/../images/apple-touch-icon.png')) : ?>
    <!-- apple-touch-icon -->
    <link rel="apple-touch-icon" href="<?php echo location_file.'images/apple-touch-icon.png'; ?>">
    <?php endif; ?>
    
    <!-- Open graph tags -->
    <meta property="og:site_name" content="<?php echo TITLE; ?>">
    <meta property="og:title" content="<?php echo $meta['title']; ?>">
    <meta property="og:type" content="website">
    <meta property="og:url" content="<?php echo (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; ?>">
    <meta property="og:description" content="<?php echo $meta['description']; ?>">
    <?php if(file_exists(dirname(__FILE__).'/../images/ogp.jpg')) : ?>
    <meta property="og:image" content="<?php echo location_file.'images/ogp.jpg'; ?>">
    <?php endif; ?>
    
```

> 質問文中に「htmlのhead内に直接変更した」とありますが、どのように変更を実施したか、追記いただけますか？

変更は、`<!-- *** og *** -->`以下のmeta
propertyの記述を直接記述しました。OGの画像を変更しようとしたページのhtmlを示します。（上に示したファイルで言うと、position1.phpに当たります）。include.phpは、head.phpを読み込むためのファイルです。

```

    <?php $page = 'recruit__yoga'; $name_jp = 'ヨガ担当'; $name_en = 'yoga'; include "../config/include.php"; ?>
    
    <!-- *** og *** -->
    <meta property="og:image" content="https://省略/recruitment/images/img_yoga_saiyou.jpg">
    
    <!-- *** stylesheet *** -->
    <?php include "../templates/common_css.php"; ?>
    <link href="../css/recruitment20180618.css" rel="stylesheet" type="text/css" media="all">
    <link href="../css/recruit__yoga.css" rel="stylesheet" type="text/css" media="all">
     <!-- *** javascript *** -->
    <?php include "../templates/common_js.php"; ?>
    <script type="text/javascript" src="../js/recruitment.js"></script>
    <script>
    </head>
    
```
CC BY-SA 4.0
2018-06-18T05:55:01.697
44845
2018-06-19T07:13:25.580
2018-06-19T05:32:43.503
28983
28983
question
php
PHPで設定したサイト全体に共通するogのimageのcontentを特定のページだけ変更したい
header.php中の

```

    <?php if(file_exists(dirname(__FILE__).'/../images/ogp.jpg')) : ?>
    <meta property="og:image" content="<?php echo location_file.'images/ogp.jpg'; ?>">
    <?php endif; ?>
    
```

こちらを変更しないで、呼び出し元(position1.php)からmetaタグを追加されても基本的にmetaタグは上書きにならず、最初に呼び出されているものが呼び出されます。

そのため上記で記述してあるところを削除してして、呼び出し側のすべてのページで設定する。  
もしくは  
フラグや変数（position1.php内の`$name_jp = 'ヨガ担当'`ようなかんじ）で条件分岐で切り替える処理を追加してください。

こちらどちらがいいかはその他のページとの兼ね合いになりそうので修正範囲等を確認しながら判断をしたほうがいいと思います。
CC BY-SA 4.0
2018-06-19T07:13:25.580
44877
2018-06-19T07:13:25.580
22665
44845
answer