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

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

ただいまの
回答率

90.47%

  • PHP

    20812questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    7420questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

wordpressの仕組みについて

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 691

nao5151

score 6

wordpressのパスが変わる仕組みに関して質問があります。

データベースのwp_postsテーブルのguidに、
記事のurlやパスが保存されていると思うのですが、
ドメインを変更した時も、データベースのguidは変わりません。
しかし、記事や画像はしっかり表示されているので、どこかで変更してくれていると想像しているのですが、
パスを変更してくれているコードや、ファイルがわかりません。

そこが分かれば今抱えている問題の原因を追究できるかもしれないので、知っている人がいれば、ぜひ教えてください!
よろしくお願いします!


追記

前の人のローカル環境から自分のローカル環境、
そしてテスト環境へ移行してきた時に、
テスト環境へ移行した時にのみ、画像だけ表示されないことがありました。
その時、管理画面のメディアで画像パスを確認するとguidと同じでした。(guidには3種類のドメインから始まるデータがはいっています。自分のローカルのドメインと、自分以前の人がいじっていた時のドメイン2種で、自分のローカル環境の時には画像をアップしていません)

移行した時に、管理画面のメディアから画像パスを確認したらどのようになっていれば正常なのでしょうか?
guidと同じか、環境のドメインと同じパスで最初から画像が表示される状態どちらが正解か分かっていません。

移行した時にメディアから見る画像パスがguidと同じ状態にする方法があればそれも知りたいです。

  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 3

checkベストアンサー

+1

ドメイン移転時のDBに格納されているURLの処理についてですね。
下記サイトの「MySQLのドメイン書き換え」の項目が参考になります。

【ドメイン変更を伴うWordPressサイトのサーバー移転方法 - WordPressの使い方と設定 - Webkaru】
http://webkaru.net/wordpress/move-site-to-new-url/


記事や画像はしっかり表示されている

WordPressは記事のURLをwp_postsテーブルに保存しているのではなく、URLから表示すべき記事を探し出すというプロセスを取っています。なので、記事の表示に直接は問題が出にくいと思います。
DB内のURLを適切に書き換えない場合、記事を書く際に別記事へのリンクを自分で挿入した場合や、一部プラグインの挙動に問題が出る可能性があります。


guid

これは、パスを保存しているわけではなく、「一意のID」として使用されています。主にフィードでの識別に使用されますが、ここを安易に変更すると「似た別の記事(コピーコンテンツ)」と認識されてしまう恐れがあります。

【WordPressを移動するには(10)GUIDカラム内の設定値の変更について: コツコツ学ぶWordPress、技術メモ】
http://hono-wp.seesaa.net/article/379577563.html

"guid"は、"Globally Unique Identifier"の略で、各投稿をグローバルに一意に識別するために、グローバルで一意であるサイトURLを使っています。



追記:

まず1点私が勘違いしている箇所がありましたので、お詫びします。

guidは関係有りません。それを使って表示している箇所は無いはずです。

「画像」を公開サイトに表示することに使っている箇所はWPコアには無いと思われますが、管理画面内では有るようです。下記サイトにもメディアライブラリのリンク切れ話が載っています。
私の回答一番上のリンク先で紹介されているツールを使うとこういったリンク問題が解消されると思います。

【WordPressのデータベースを直接書き換えて画像のリンク切れを解消した話 - shuto_log.aep】
http://shutosg.hatenadiary.com/entry/2015/12/01/130934

WordPress で画像を保存する際に、各種画像情報は記事と同じテーブルである「wp_postsテーブル」に保存されます。そのテーブルに登録する関数に guid を生成するものも含まれ、それがURLを基準としたものになっており、画像の場合は画像のパスになるという仕組みです。
ただ、記事ページを生成する際には相対パスを保持した「wp_postmetaテーブル」から呼ばれるため、公開サイト上は(画像さえFTPでアップしていれば)問題なく表示されることになります。

【wordpressで画像はどのようにデータベースに記録されているか | hellooooworld.com】
http://hellooooworld.com/wordpressで画像はどのようにデータベースに記録されて/

WPのコア側で「guid」を使ったURL生成は "根本的に間違っている" (wp_postmetaテーブルから呼び出すべき)ため、バージョンアップのときにバグフィックスされた可能性があり、「再現実験」がうまくいかなかったという可能性くらいが私の考えられる限界かなと思います。

長々と、あまり役に立たない迂回をさせてしまって申し訳ない。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/04/23 00:30

    追記があったので、それに一言。
    > データベースのguidと同じだったため見れないようでした
    guidは関係有りません。それを使って表示している箇所は無いはずです。

    WordPressはサイトアドレスを保存する項目があり、そこを変更しない限り移転前のURLになります。

    【WordPressアドレス(URL)とサイトアドレス(URL)を別にする方法 | weluka team blog】
    https://www.weluka.me/blog/archives/1045

    キャンセル

  • 2016/04/23 01:12 編集

    回答ありがとうございます!
    説明のおかげでguidをurlやパスだと思っていたのですが、そうではないことを理解できました!

    しかし、なぜメディアから確認した画像パスのドメイン部分がサイトドメインと違くなってしまったのかがスッキリしません。

    サイトurlとwordpressのurlを異なる設定にしたこともありません。

    キャンセル

  • 2016/04/23 01:25

    wordpressではなく、環境などに原因があるのかもしれないですね。

    キャンセル

  • 2016/04/23 01:53

    追記しました。

    キャンセル

  • 2016/04/23 07:54

    回答ありがとうございました!
    自分の質問、説明がうまくできなかったと思います。

    kei344さんの回答で新しい知識を増やすことができたので、
    とても嬉しいです!

    ありがとうございます!

    キャンセル

+1

GUID というのは、ソフトウェアを識別するための一意な値です。その WordPress に載せた記事を特定する識別子の生成に、この wp_posts の guid が使われているようです。たとえば、nao5151 さんの管理している WordPress の読者がいて、フィードを取得していたとします。そのときの記事の識別子を見て、既読かどうかをチェックするわけです。もし、ドメインの引っ越しで WordPress の各記事の URL が変わってしまっても、識別子が一緒であれば同じ記事だと判断できます。逆に言うと、wp_posts の guid を変更してしまうと、読者のほうで既読としていた記事がすべて未読と判断されてしまいます(記事の識別子が変わってしまうので)。
というわけで、ドメインを変更しても、guid は変更されませんし、それが正しい動作です。

ご質問の内容が今ひとつわからないのですが、次のページは参考になりますか。
サイト URL の変更 - WordPress Codex 日本語版

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/04/23 01:24

    回答ありがとうございます!

    guidがurlでないことは理解できました!
    見かけで判断してしまいました。

    キャンセル

-8

開発側と仲良くなれば良い。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

関連した質問

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

  • PHP

    20812questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    7420questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。