embed

PHP

【WordPress】application/json+oembedに含まれる著作者情報を削除する。

更新日:2023/03/13

WordPressで生成したWebページは他のページにリンクを組みこむための情報(embed)が記述されています。
この情報にはログイン名が含まれることがあります。
少し問題なので、削除してみます。

 

oembedに含まれる著作者情報

まずは、どんな情報が含まれるか確認してみます。

WordPressサイトの多くは、Webページのソースコードを開くと次のようなタグが記述されています。

<link rel="alternate" type="application/json+oembed" href="https://ドメイン名/index.php?rest_route=%2Foembed%2F1.0%2Fembed&#038;url=https%3A%2F%2Fドメイン名%2F%3Fp%3D1" />
<link rel="alternate" type="text/xml+oembed" href="https://ドメイン名/index.php?rest_route=%2Foembed%2F1.0%2Fembed&#038;url=https%3A%2F%2Fドメイン名%2F%3Fp%3D1&#038;format=xml" />

各タグのリンク先を開くと、次のような情報を取得できます。

type="application/json+oembed"

{
  "version":"1.0",
  "provider_name":"My Blog",
  "provider_url":"https:\/\/ドメイン名",
  "author_name":"test",
  "author_url":"https:\/\/ドメイン名\/?author=1",
  "title":"Hello world!",
  "type":"rich",
  "width":600,
  "height":338,
  "html":"<blockquote class=\"wp-embedded-content\" data-secret=\"dqoxvSCSXu\"><a href=\"https:\/\/ドメイン名\/?p=1\">Hello world!<\/a><\/blockquote><iframe sandbox=\"allow-scripts\" security=\"restricted\" src=\"https:\/\/ドメイン名\/?p=1&#038;embed=true#?secret=dqoxvSCSXu\" width=\"600\" height=\"338\" title=\"&#8220;Hello world!&#8221; &#8212; My Blog\" data-secret=\"dqoxvSCSXu\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" class=\"wp-embedded-content\"><\/iframe><script>\n\/*! This file is auto-generated *\/\n!function(c,l){\"use strict\";var e=!1,o=!1;if(l.querySelector)if(c.addEventListener)e=!0;if(c.wp=c.wp||{},c.wp.receiveEmbedMessage);else if(c.wp.receiveEmbedMessage=function(e){var t=e.data;if(!t);else if(!(t.secret||t.message||t.value));else if(\/[^a-zA-Z0-9]\/.test(t.secret));else{for(var r,s,a,i=l.querySelectorAll('iframe[data-secret=\"'+t.secret+'\"]'),n=l.querySelectorAll('blockquote[data-secret=\"'+t.secret+'\"]'),o=0;o<n.length;o++)n[o].style.display=\"none\";for(o=0;o<i.length;o++)if(r=i[o],e.source!==r.contentWindow);else{if(r.removeAttribute(\"style\"),\"height\"===t.message){if(1e3<(s=parseInt(t.value,10)))s=1e3;else if(~~s<200)s=200;r.height=s}if(\"link\"===t.message)if(s=l.createElement(\"a\"),a=l.createElement(\"a\"),s.href=r.getAttribute(\"src\"),a.href=t.value,a.host===s.host)if(l.activeElement===r)c.top.location.href=t.value}}},e)c.addEventListener(\"message\",c.wp.receiveEmbedMessage,!1),l.addEventListener(\"DOMContentLoaded\",t,!1),c.addEventListener(\"load\",t,!1);function t(){if(o);else{o=!0;for(var e,t,r,s=-1!==navigator.appVersion.indexOf(\"MSIE 10\"),a=!!navigator.userAgent.match(\/Trident.*rv:11\\.\/),i=l.querySelectorAll(\"iframe.wp-embedded-content\"),n=0;n<i.length;n++){if(!(r=(t=i[n]).getAttribute(\"data-secret\")))r=Math.random().toString(36).substr(2,10),t.src+=\"#?secret=\"+r,t.setAttribute(\"data-secret\",r);if(s||a)(e=t.cloneNode(!0)).removeAttribute(\"security\"),t.parentNode.replaceChild(e,t);t.contentWindow.postMessage({message:\"ready\",secret:r},\"*\")}}}}(window,document);\n<\/script>\n"
}

type="text/xml+oembed"

<oembed>
  <version>1.0</version>
  <provider_name>MyBlog</provider_name>
  <provider_url>https://ドメイン名</provider_url>
  <author_name>test</author_name>
  <author_url>https://ドメイン名/?author=1</author_url>
  <title>Hello world!</title>
  <type>rich</type>
  <width>600</width>
  <height>338</height>
  <html>&lt;blockquote class="wp-embedded-content" data-secret="L2LL5fvlRD"&gt;&lt;a href="https://ドメイン名/?p=1"&gt;Hello world!&lt;/a&gt;&lt;/blockquote&gt;&lt;iframe sandbox="allow-scripts" security="restricted" src="https://ドメイン名/?p=1&amp;embed=true#?secret=L2LL5fvlRD" width="600" height="338" title="&#x201C;Hello world!&#x201D; &#x2014; My Blog" data-secret="L2LL5fvlRD" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" class="wp-embedded-content"&gt;&lt;/iframe&gt;&lt;script&gt;
/*! This file is auto-generated */
!function(c,l){"use strict";var e=!1,o=!1;if(l.querySelector)if(c.addEventListener)e=!0;if(c.wp=c.wp||{},c.wp.receiveEmbedMessage);else if(c.wp.receiveEmbedMessage=function(e){var t=e.data;if(!t);else if(!(t.secret||t.message||t.value));else if(/[^a-zA-Z0-9]/.test(t.secret));else{for(var r,s,a,i=l.querySelectorAll('iframe[data-secret="'+t.secret+'"]'),n=l.querySelectorAll('blockquote[data-secret="'+t.secret+'"]'),o=0;o&lt;n.length;o++)n[o].style.display="none";for(o=0;o&lt;i.length;o++)if(r=i[o],e.source!==r.contentWindow);else{if(r.removeAttribute("style"),"height"===t.message){if(1e3&lt;(s=parseInt(t.value,10)))s=1e3;else if(~~s&lt;200)s=200;r.height=s}if("link"===t.message)if(s=l.createElement("a"),a=l.createElement("a"),s.href=r.getAttribute("src"),a.href=t.value,a.host===s.host)if(l.activeElement===r)c.top.location.href=t.value}}},e)c.addEventListener("message",c.wp.receiveEmbedMessage,!1),l.addEventListener("DOMContentLoaded",t,!1),c.addEventListener("load",t,!1);function t(){if(o);else{o=!0;for(var e,t,r,s=-1!==navigator.appVersion.indexOf("MSIE 10"),a=!!navigator.userAgent.match(/Trident.*rv:11\./),i=l.querySelectorAll("iframe.wp-embedded-content"),n=0;n&lt;i.length;n++){if(!(r=(t=i[n]).getAttribute("data-secret")))r=Math.random().toString(36).substr(2,10),t.src+="#?secret="+r,t.setAttribute("data-secret",r);if(s||a)(e=t.cloneNode(!0)).removeAttribute("security"),t.parentNode.replaceChild(e,t);t.contentWindow.postMessage({message:"ready",secret:r},"*")}}}}(window,document);
&lt;/script&gt;
</html>
</oembed>

両タイプ共に、ここには記述していませんが、投稿にアイキャッチ画像が登録されているときはサムネイルに関する3つの項目(thumbnail_urlthumbnail_widththumbnail_height)が追加で出力されます。

太い赤文字がユーザー情報です。
著作者URL(author_url)については定型なので問題ないのですが、著作者名(author_name)は問題があります。

それと言うのも、デフォルトではログイン名が記述されているからです。
この名前を使ってパスワードを総当たりすることで、管理画面にログインできてしまいます。

 

著作者情報を変更する

ユーザープロフィールのブログ上の表示名を変更することでoembedの著作者名を変えることができます。
その他の項目を変更するときは、oembed_response_dataフィルターを使用します。

add_filter( 'oembed_response_data' , function($data, $post, $width, $height){
	$data['author_name'] = 'けーちゃん';
	$data['author_url'] = '';
	// $data['version'] =
	// $data['provider_name'] =
	// $data['provider_url'] =
	// $data['title'] =
	// $data['type'] =

        // 規定項目以外も追加可能
	$data['thumbnail_url'] = get_the_post_thumbnail_url($post);

	return $data;
},10,4);

これで、ユーザー情報を変更できます。
他の項目も変更できるので、必要なときはコメントを外して値を変更してください。

また規定以外の項目を追加できます。
上記の例はアイキャッチのURLを追加しています。
この項目を追加すると、幅(thumbnail_width)と高さ(thumbnail_height)が自動で追加されます。

なお著作者ページを公開していないときは、著作者ページへのリンク生成にフィルターを掛けるのが手っ取り早いです。

add_filter('author_link',
    function ($termlink){
        return '';
    },999);

これで、全ての著作者ページへのリンクが空文字になります。

the_author_link()またはget_the_author_link()を使用するとユーザサイトへのリンクが表示されます。
このリンク先は、管理画面のユーザープロフィールのサイトに登録したURLです。
ユーザープロフィールを変更するか、次のフィルターでリンクを変更できます。

add_filter( 'the_author_link', function ($link, $author_url, $authordata ){
    return ''; // リンクを削除
}10,3);

WordPressはHTMやCSSの知識も必要。総合的な知識を身につけよう。

更新日:2023/03/13

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。