[{"data":1,"prerenderedAt":331},["ShallowReactive",2],{"$ft6jtkd6xhw3c":3,"$f156tvbum8erpa":263},{"featured":4,"latest":129,"categories":227},[5,14,27,37,48,56,66,76,86,96,106,114,122],{"slug":6,"title":7,"date":8,"excerpt":9,"image":10,"categories":11},"custom-database-tables","Custom DataBase Tables","2015-11-24T02:29:34","You can create the new own table freely in the your WordPress database via this plugin. Then, you can make the management of table or (as view or entry or edit) data in a simple user interface.\\nAlso,","\u002Fassets\u002Fuploads\u002F2016\u002F02\u002Fcdbt-overview.png",[12],{"slug":13,"name":7},"cdbt",{"slug":15,"title":16,"date":17,"excerpt":18,"image":19,"categories":20},"10_php_tips_for_developers","PHP開発者が心得ておくべき10の鉄則","2016-01-11T18:38:09","PHPだけに限った話ではないが、プログラミングを行うに当たって、心得て、準備しておくと失敗が劇的に減る事柄をまとめてある良い記事を見つけたので、私なりの解釈で意訳しつつ、経験則を踏まえてあらためてまとめてみた。 オリジナ…","\u002Fassets\u002Fuploads\u002F2016\u002F01\u002Feyecatch-php-10-tips.jpg",[21,24],{"slug":22,"name":23},"column","コラム",{"slug":25,"name":26},"development","開発関連",{"slug":28,"title":29,"date":30,"excerpt":31,"image":32,"categories":33},"jquery-timeline-v1","2種類の横型タイムラインを簡単に作成できる「jQuery.Timeline」をリリース","2017-05-29T14:55:46","現在開発しているサービスで利用するべく、横型タイムラインを生成できるjQueryプラグインを自作したので、そこだけ単独でリリースしてみた。 ソースコード等はGitHubの方にリリースしてあるので、興味のある方は、そち…","\u002Fassets\u002Fuploads\u002F2017\u002F05\u002Fjquery_timeline_image.png",[34],{"slug":35,"name":36},"jqtl","jQuery.Timeline",{"slug":38,"title":39,"date":40,"excerpt":41,"image":42,"categories":43},"optimize-browser-cache-of-static-resources","更新されたJS、CSS、画像のみブラウザキャッシュを破棄して読み込ませる","2018-01-31T15:47:47","WEBサービスの保守や開発をやっていると、JavaScriptやスタイルシート、画像などの静的リソースを更新した際、しばしば「確認したけど、更新されてないよ」とか云われて、「ブラウザのキャッシュを消してからもう一度見て…",null,[44,47],{"slug":45,"name":46},"codes","コード集",{"slug":25,"name":26},{"slug":49,"title":50,"date":51,"excerpt":52,"image":53,"categories":54},"jquery-timeline","jQuery.Timeline version2 – full documentation","2019-03-04T20:40:48","Plugin Overview The jQuery.Timeline plugin provides you two types of the horizontal timeline. You can create a…","\u002Fassets\u002Fuploads\u002F2019\u002F03\u002Fjquery.timeline_v2.jpg",[55],{"slug":35,"name":36},{"slug":57,"title":58,"date":59,"excerpt":60,"image":61,"categories":62},"released-the-sloth","Released the Sloth of mobile-first CSS micro framework!","2019-04-16T18:04:25","I released the “Sloth” that is mobile-first CSS micro framework. I have long used frontend framewo…","\u002Fassets\u002Fuploads\u002F2019\u002F04\u002Fsloth_doc_head.png",[63],{"slug":64,"name":65},"sloth","Sloth",{"slug":67,"title":68,"date":69,"excerpt":70,"image":71,"categories":72},"challenge-to-conceal-the-wordpress-site","WordPressサイトを徹底的に秘匿化する","2020-02-02T23:59:58","私は自分の個人サイトをはじめ、仕事でもWordPressサイトを運用している。WordPressは気軽にサイトを立ち上げられてカスタマイズも簡単な、素晴らしいオープンソースなのだが、世界中で使われまくっているその知名度…","\u002Fassets\u002Fuploads\u002F2020\u002F02\u002Fshutterstock_1878005929.jpg",[73],{"slug":74,"name":75},"wordpress","WordPress関連",{"slug":77,"title":78,"date":79,"excerpt":80,"image":81,"categories":82},"what-is-forkor","Made a shortened URL app called Forkor","2020-07-07T22:27:01","What’s Forkor? Forkor is a service that provides a shortened URL feature that allows you to redirect any…","\u002Fassets\u002Fuploads\u002F2020\u002F07\u002Fforkor.png",[83],{"slug":84,"name":85},"forkor","Forkor",{"slug":87,"title":88,"date":89,"excerpt":90,"image":91,"categories":92},"manual-about-svg-japan","インタラクティブな日本地図を生成するJSプラグイン「SVG Japan」","2020-11-16T21:19:58","各都道府県をそれぞれ選択・クリック可能なインタラクティブな日本地図を生成するネイティブJavaScript建てのプラグイン「SVG Japan」を作ったので、その紹介と使い方をまとめておく。ちなみにソースコードはgit…","\u002Fassets\u002Fuploads\u002F2020\u002F11\u002Fsvg-japan.png",[93],{"slug":94,"name":95},"svg-japan","SVG Japan",{"slug":97,"title":98,"date":99,"excerpt":100,"image":101,"categories":102},"wp-ignitor-plugin-to-conceal-wordpress-site","WordPressサイトを秘匿化するプラグイン「WP Ignitor」","2021-01-19T15:28:21","以前「WordPressサイトを徹底的に秘匿化する」という記事で、WordPress建てのサイトを秘匿化する方法を取り上げたのだが、あれをサイト構築時に毎度実施するとなるととても労力が必要であった。そこで、もっとお手軽…","\u002Fassets\u002Fuploads\u002F2021\u002F01\u002Fbanner-1554x500-1.png",[103],{"slug":104,"name":105},"wp-ignitor","WPイグナイタ",{"slug":107,"title":108,"date":109,"excerpt":110,"image":111,"categories":112},"tastewp","無料でWordPressサイトを複数作成できるWEBサービス「TasteWP」","2021-03-25T20:21:59","私が日本語翻訳に協力しているWEBサービス「TasteWP」について紹介しようと思う。 https:\u002F\u002Ftastewp.com このサービス、サインアップすることなく無料で自分用のWordPressサイトを作れるとい…","\u002Fassets\u002Fuploads\u002F2021\u002F03\u002FTasteWP_screenshot.png",[113],{"slug":74,"name":75},{"slug":115,"title":116,"date":117,"excerpt":118,"image":119,"categories":120},"monster-hunter-rise-skill-simulator","モンハンライズのスキルシミュレータを作ってみた！","2021-06-28T20:24:52","コラムで連載していたNintendo Switch版『モンスターハンターライズ』のスキルシミュレータ開発がやっと一段落して一通り完了した。いやぁ、記事書きながら同時並行で開発すると思っていた以上に時間がかかるもんだなぁ…","\u002Fassets\u002Fuploads\u002F2021\u002F06\u002Fmhrss_v100.png",[121],{"slug":25,"name":26},{"slug":123,"title":124,"date":125,"excerpt":126,"image":42,"categories":127},"comparison-of-javascript-date-libraries","JavaScriptの日時ライブラリを比較してみた","2021-07-28T22:39:19","ネイティブJavaScriptで日時を取り扱う場合、ビルトインされているDateオブジェクトを使うことになるのだが、このDateオブジェクトは取り扱いにクセが多く、直感的に日時を操作できない点でも有名である。そこで、専…",[128],{"slug":25,"name":26},[130,141,153,165,175,184,192,195,198,206,213,220],{"slug":131,"title":132,"date":133,"excerpt":134,"image":135,"categories":136},"pulllog_launched","ガチャ履歴を記録・分析できるWebサービス「PullLog」","2025-08-22T13:05:30","このたび、新しい個人開発サービスとして 「PullLog（プルログ）」 をリリースした。 URLはこちら https:\u002F\u002Fpulllog.net PullLogとは？ PullLogは、ソーシャルゲームのガチャ履歴を記録…","\u002Fassets\u002Fuploads\u002F2025\u002F08\u002Fpulllog_stats_jp.png",[137,140],{"slug":138,"name":139},"industries","プロダクト",{"slug":25,"name":26},{"slug":142,"title":143,"date":144,"excerpt":145,"image":146,"categories":147},"mockapi-php-openapi-schema-generation","モックAPIのレスポンスから OpenAPI 3.0 スキーマを自動生成するPHPツール","2025-04-17T09:31:52","私自身がそうなのですが、OpenAPI仕様書を毎回手作業で書いていて「面倒だな」と思ったことはありませんか？ そんな（私と）あなたにぴったりのツールがあります。 レスポンスの例さえ用意すれば、OpenAPI 3.0 スキ…","\u002Fassets\u002Fuploads\u002F2025\u002F04\u002Fswaggerui-preview.png",[148,151,152],{"slug":149,"name":150},"mockapi-php","MockAPI-PHP",{"slug":138,"name":139},{"slug":25,"name":26},{"slug":154,"title":155,"date":156,"excerpt":157,"image":158,"categories":159},"ambient_playlist_customize","Ambientでメメントモリのラメントプレイヤーを作る","2023-11-30T17:32:39","「Ambient」の最新バージョン 1.2.0で実装した「疑似フェーダー」機能を使って、ソーシャルゲーム「メメントモリ」のYouTube公式チャンネルで公開されているMVを集約したラメント専用プレイヤーを作ってみた。 ラ…","\u002Fassets\u002Fuploads\u002F2023\u002F11\u002Fambient_mememori_1.png",[160,163,164],{"slug":161,"name":162},"ambient","Ambient",{"slug":138,"name":139},{"slug":25,"name":26},{"slug":166,"title":167,"date":168,"excerpt":169,"image":170,"categories":171},"released_ambient_demo_version","Ambientメディアプレイヤーのクラウド版デモを公開","2023-11-22T13:47:36","つい先日「Ambient」の最新バージョン 1.1.0をリリースして、それに合わせてクラウド版デモサイトも公開してみた。 なお、クラウド版デモでローカルのホストコンピュータのメディアを再生するには、そのメディアファイルも…","\u002Fassets\u002Fuploads\u002F2023\u002F10\u002FAmbientMediaPlayer-typologo.png",[172,173,174],{"slug":161,"name":162},{"slug":138,"name":139},{"slug":25,"name":26},{"slug":176,"title":177,"date":178,"excerpt":179,"image":170,"categories":180},"ambient-media-player","YouTubeと自分のPC内メディアを同時に再生できるメディアプレイヤーを作ってみた","2023-10-20T00:00:25","私はよくPCで何か作業をするときには音楽を垂れ流していることが多い。 そういう時にかける曲は、手持ちのアルバムCD等からPCに取り込んだ音源だったり、さらにはYouTubeの動画だったりとメディアや再生環境がバラバラだ。…",[181,182,183],{"slug":161,"name":162},{"slug":138,"name":139},{"slug":25,"name":26},{"slug":185,"title":186,"date":187,"excerpt":188,"image":189,"categories":190},"what-is-the-sunorhc","Sunorhc is a date-time library for JavaScript","2021-08-25T22:55:55","Sunorhc is a lightweight library for handling dates and times for JavaScript. The library wraps a native JavaS…","\u002Fassets\u002Fuploads\u002F2021\u002F08\u002Fshutterstock_1091212919_resized.jpg",[191],{"slug":25,"name":26},{"slug":123,"title":124,"date":125,"excerpt":126,"image":42,"categories":193},[194],{"slug":25,"name":26},{"slug":115,"title":116,"date":117,"excerpt":118,"image":119,"categories":196},[197],{"slug":25,"name":26},{"slug":199,"title":200,"date":201,"excerpt":202,"image":203,"categories":204},"mhrise-skill-simulator-creation-chapter-12","モンスターハンターライズのスキルシミュレータを作ってみる！ 第12回","2021-06-21T13:11:46","今回は「マイセット登録」と護石データの「エクスポート／インポート」機能の追加をしていく。折り良く（悪く？）「FF7リメイク・インターグレード」や「FORTNITEシーズン7」が出たこともあって、そっちをプレイしてたらこ…","\u002Fassets\u002Fuploads\u002F2021\u002F04\u002Fb6ca09e9a7f6faf27641f62dabe64c6ff97b4f326aa478379e3c112aa28eb9ab.jpg",[205],{"slug":22,"name":23},{"slug":207,"title":208,"date":209,"excerpt":210,"image":203,"categories":211},"mhrise-skill-simulator-creation-chapter-11","モンスターハンターライズのスキルシミュレータを作ってみる！ 第11回","2021-06-07T14:52:31","さて、今回はユーザー個別データの管理部分を開発していく予定だが、まずその前にやっておくことがある。 新スキル「風雷合一」に対応する Ver.3.0の大型無料アップデートで追加された新スキルに「風雷合一」というのがある…",[212],{"slug":22,"name":23},{"slug":214,"title":215,"date":216,"excerpt":217,"image":203,"categories":218},"mhrise-skill-simulator-creation-chapter-10","モンスターハンターライズのスキルシミュレータを作ってみる！ 第10回","2021-06-02T00:29:10","今回は、護石管理画面の作成だ。この護石管理では、ユーザーごとに護石の登録を行う機能と、登録した護石を削除する機能を持つ仕様になる。この画面から登録した護石データはデータベースに格納するので、フロントエンド側からのリクエス…",[219],{"slug":22,"name":23},{"slug":221,"title":222,"date":223,"excerpt":224,"image":203,"categories":225},"mhrise-skill-simulator-creation-chapter-9","モンスターハンターライズのスキルシミュレータを作ってみる！ 第9回","2021-05-22T23:56:27","さて、今回はVuexによるデータ・キャッシュの実装だ。一度データベースから読み込んだデータをフロントエンド側で再利用可能なストアに格納することで、データベースへの接続回数を減らしてシステム負荷を下げるとともに、UX的な…",[226],{"slug":22,"name":23},[228,230,232,236,238,239,240,241,242,244,247,248,250,252,254,258,261],{"slug":161,"name":162,"count":229},3,{"slug":13,"name":7,"count":231},7,{"slug":233,"name":234,"count":235},"csnp","Custom Sticky Notes",2,{"slug":84,"name":85,"count":237},1,{"slug":35,"name":36,"count":229},{"slug":149,"name":150,"count":237},{"slug":64,"name":65,"count":237},{"slug":94,"name":95,"count":237},{"slug":74,"name":75,"count":243},37,{"slug":245,"name":246,"count":237},"wpqt","WP Qiita",{"slug":104,"name":105,"count":237},{"slug":22,"name":23,"count":249},29,{"slug":45,"name":46,"count":251},16,{"slug":138,"name":139,"count":253},5,{"slug":255,"name":256,"count":257},"lifelog","ライフログ",64,{"slug":259,"name":260,"count":235},"uncategorized","未分類",{"slug":25,"name":26,"count":262},45,{"type":264,"post":265},"post",{"slug":266,"title":267,"date":268,"excerpt":269,"image":71,"categories":270,"modified":272,"html":273,"tags":274,"related":300,"prev":325,"next":328},"part2-tips-of-customize-theme-without-wordpressish-coding","第2章 脱WordPress式テーマのカスタマイズ","2020-02-10T15:17:24","まず、下記のソースを見て欲しい。 \u003Chead> \u003Cmeta charset=”UTF-8″> \u003Cmeta name=”viewport” content=”width=device-wid…",[271],{"slug":74,"name":75},"2021-02-05T12:32:47","\u003Cp>　まず、下記のソースを見て欲しい。\u003C\u002Fp>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">&#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">head\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">meta\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> charset\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"UTF-8\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">meta\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> name\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"viewport\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> content\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"width=device-width, initial-scale=1.0\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">link\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> rel\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"profile\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> href\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"https:\u002F\u002Fgmpg.org\u002Fxfn\u002F11\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">title\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>{サイトのタイトル} – {キャッチフレーズ}&#x3C;\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">title\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">meta\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> name\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"robots\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> content\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"noindex,nofollow\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">link\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> rel\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"dns-prefetch\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> href\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"\u002F\u002Fs.w.org\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">link\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> rel\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"alternate\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> type\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"application\u002Frss+xml\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> title\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"{サイトのタイトル} » フィード\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> href\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"https:\u002F\u002F{Domain_Name}\u002Findex.php\u002Ffeed\u002F\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">link\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> rel\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"alternate\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> type\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"application\u002Frss+xml\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> title\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"{サイトのタイトル} » コメントフィード\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> href\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"https:\u002F\u002F{Domain_Name}\u002Findex.php\u002Fcomments\u002Ffeed\u002F\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">script\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    window._wpemojiSettings \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> {\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"baseUrl\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">:\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"https:\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\u002F\\\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">s.w.org\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">images\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">core\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">emoji\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">12.0.0-1\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">72x72\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">,\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"ext\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">:\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\".png\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">,\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"svgUrl\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">:\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"https:\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\u002F\\\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">s.w.org\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">images\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">core\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">emoji\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">12.0.0-1\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">svg\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">,\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"svgExt\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">:\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\".svg\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">,\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"source\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">:{\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"concatemoji\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">:\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"https:\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\u002F\\\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">{Domain_Name}\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">app\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">wp-includes\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">js\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">wp-emoji-release.min.js?ver=5.3.2\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">}};\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    !function\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#FFAB70\">e\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">,\u003C\u002Fspan>\u003Cspan style=\"color:#FFAB70\">a\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">,\u003C\u002Fspan>\u003Cspan style=\"color:#FFAB70\">t\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">){ (\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">...\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">以下省略)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  &#x3C;\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">script\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">script\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> src\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"https:\u002F\u002F{Domain_Name}\u002Fapp\u002Fwp-includes\u002Fjs\u002Fwp-emoji-release.min.js?ver=5.3.2\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> type\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"text\u002Fjavascript\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> defer\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>&#x3C;\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">script\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">style\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    img.wp-smiley,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    img.emoji { (\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">...\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">以下省略) }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">style\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">link\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> rel\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"stylesheet\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> id\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"wp-block-library-css\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> href\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"https:\u002F\u002F{Domain_Name}\u002Fapp\u002Fwp-includes\u002Fcss\u002Fdist\u002Fblock-library\u002Fstyle.min.css?ver=5.3.2\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> media\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"all\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">link\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> rel\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"stylesheet\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> id\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"twentytwenty-style-css\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> href\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"https:\u002F\u002F{Domain_Name}\u002Fassets\u002Fthemes\u002Ftwentytwenty\u002Fstyle.css?ver=1.1\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> media\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"all\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">style\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> id\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"twentytwenty-style-inline-css\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    (...以下省略)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">style\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">link\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> rel\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"stylesheet\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> id\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"twentytwenty-print-style-css\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> href\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"https:\u002F\u002F{Domain_Name}\u002Fassets\u002Fthemes\u002Ftwentytwenty\u002Fprint.css?ver=1.1\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> media\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"print\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">script\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> src\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"https:\u002F\u002F{Domain_Name}\u002Fassets\u002Fthemes\u002Ftwentytwenty\u002Fassets\u002Fjs\u002Findex.js?ver=1.1\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> async\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>&#x3C;\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">script\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">link\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> rel\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"https:\u002F\u002Fapi.w.org\u002F\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> href\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"https:\u002F\u002F{Domain_Name}\u002Findex.php\u002Fwp-json\u002F\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">link\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> rel\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"EditURI\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> type\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"application\u002Frsd+xml\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> title\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"RSD\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> href\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"https:\u002F\u002F{Domain_Name}\u002Fapp\u002Fxmlrpc.php?rsd\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">link\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> rel\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"wlwmanifest\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> type\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"application\u002Fwlwmanifest+xml\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> href\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"https:\u002F\u002F{Domain_Name}\u002Fapp\u002Fwp-includes\u002Fwlwmanifest.xml\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">> \u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">meta\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> name\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"generator\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> content\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"WordPress 5.3.2\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">script\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>document.documentElement.className = document.documentElement.className.replace( 'no-js', 'js' );&#x3C;\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">script\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">style\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>.recentcomments a{display:inline \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">!\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">important;padding:\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">0\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\"> !\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">important;margin:\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">0\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\"> !\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">important;}&#x3C;\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">style\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">&#x3C;\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">head\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>　これは第1章でインストールしたWordPressサイトのホームURLを表示した時のHTMLソースの\u003Ccode>&lt;head&gt;\u003C\u002Fcode>要素だ。なお、デフォルトインストールなので、使用しているテーマは\u003Ccode>TwentyTwenty\u003C\u002Fcode>である。\u003Cbr \u002F>\n　第1章で色々秘匿化したものの、こうやってソースを覗かれた時点で、このサイトがWordPressで作成されていることがバレバレなことがわかるだろうか？\u003Cbr \u002F>\n　端的には、\u003Ccode>&lt;meta name=\"generator\" content=\"WordPress 5.3.2\"&gt;\u003C\u002Fcode>の記述によって、\u003Cstrong>生成元のアプリがWordPress 5.3.2\u003C\u002Fstrong>だと宣言されているし、他にも読み込まれる\u003Ccode>&lt;script&gt;\u003C\u002Fcode>や\u003Ccode>&lt;link&gt;\u003C\u002Fcode>タグのリソースURLに\u003Ccode>wp-includes\u003C\u002Fcode>等のディレクトリパスが含まれているので、そこからWordPressのインストールパスまでが露見してしまっている。\u003C\u002Fp>\n\u003Cp>　このままではWordPressの秘匿化は到底成しえないので、ここからはテーマ側をカスタマイズしていく必要がある。まぁ、バンドルテーマのTwentyシリーズ以外のWordPressっぽさが排除されているテーマを使用してしまえば一番手っ取り早いのだが、このチャレンジでは、あえてTwentyシリーズのテーマを秘匿化することで、他のテーマをカスタマイズする時の知見になればと考えている。\u003C\u002Fp>\n\u003Ch2>テーマの独自拡張のコツ\u003C\u002Fh2>\n\u003Cp>　WordPressのテーマは各テーマディレクトリ内の\u003Ccode>functions.php\u003C\u002Fcode>で様々な制御ができることは広く知られている。しかし、\u003Ccode>functions.php\u003C\u002Fcode>の1ファイルのみにテーマの全制御系を詰め込んでしまうと、保守がしづらくなってしまう。バンドルテーマであるTwentyシリーズでは、\u003Ccode>functions.php\u003C\u002Fcode>から機能ごとにクラス化された外部ファイルを\u003Ccode>require\u003C\u002Fcode>する仕組みを取り入れているものの、一部のフィルタリング処理が併記されているので、全体的な処理が把握しづらい。\u003Cbr \u002F>\n　ちなみに、私がオリジナルテーマを作成する場合、テーマ制御系の全処理をクラス化してしまい、\u003Ccode>functions.php\u003C\u002Fcode>はディスパッチャーとして、クラスのオートロードとインスタンス化のみを行うような建付けにしている。例えば、下記のような構成である。\u003C\u002Fp>\n\u003Cpre>\u003Ccode>WordPressThemeName\u002F\n ├ vendor\u002F\n │ ├ composer\u002F\n │ └ autoload.php \n ├ libs\u002F\n │ ├ wpTheme.php (抽象クラス＝基底クラス: abstract class wpTheme)\n │ ├ ThemeName.php (wpThemeを継承したメインクラス: class ThemeName extends wpTheme)\n │ ├ actions.php (アクションフックのみをメソッドとして集約した、メインクラスのtrait)\n │ ├ filters.php (フィルターフックのみをメソッドとして集約した、メインクラスのtrait)\n │ └ apis.php （独自テンプレート関数をAPIとして集約した、メインクラスのtrait）\n ├ functions.php （ディスパッチャースクリプト＝クラスのオートロード等）\n └ index.php （テーマのインデックス）\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>　ディスパッチャースクリプトとしての役目だけを持った\u003Ccode>functions.php\u003C\u002Fcode>は、下記のようにシンプルな構造になる。\u003C\u002Fp>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">&#x3C;?\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">php\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">defined\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'MS_THEME_VERSION'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ) \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">or\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> define\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'WP_THEME_VERSION'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'1.0.0'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">defined\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'MS_THEME_SLUG'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ) \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">or\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> define\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'WP_THEME_SLUG'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'ThemeName'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">require_once\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">__DIR__\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\"> .\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\"> '\u002Fvendor\u002Fautoload.php'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> mywp\\ThemeName\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">$class \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\"> 'mywp\\ThemeName'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">if\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ( \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">class_exists\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'mywp\\ThemeName'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ) ) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    ThemeName\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">::\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\">get_object\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">();\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">} \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">else\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    trigger_error\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"Unable to load class: \u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">$class\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">E_USER_WARNING\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    exit\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>　この構成はプラグインでも同じように使えるうえ、機能を細分化したり追加したりするのは全てtraitに集約してしまえるので、クラスの管理がかなり楽になる。この辺りの詳しいことは近いうちに別記事で紹介したいと思う。\u003C\u002Fp>\n\u003Cp>　さて、話が飛んでしまったので元に戻そう。\u003Cbr \u002F>\n　今回はバンドルテーマ「TwentyTwenty」をカスタマイズするのだが、\u003Ccode>functions.php\u003C\u002Fcode>にはあまり手を加えたくない。なぜなら、元ソースの処理が読みづらくなったりして保守しづらくなるからだ。ということで、オリジナルの\u003Ccode>functions.php\u003C\u002Fcode>の末尾に下記の記述を追加してカスタマイズを進めることにする。\u003C\u002Fp>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">$concealer_path \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> $_SERVER[\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'DOCUMENT_ROOT'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">] \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">.\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\"> '\u002Fconceal.php'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">if\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ( \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">file_exists\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( $concealer_path ) ) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    require\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> $concealer_path;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>　次に、秘匿化処理用のファイル\u003Ccode>conceal.php\u003C\u002Fcode>をドキュメントルート直下に作成する。\u003C\u002Fp>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">$\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\"> cd\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\"> {Document_Root_Path}\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">$\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\"> touch\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\"> conceal.php\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>　さらに、\u003Ccode>.htaccess\u003C\u002Fcode>に\u003Ccode>conceal.php\u003C\u002Fcode>への直接アクセスを抑止する設定を追加しておくと万全だ。\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-aconf\"># ---\n# 8. ドキュメントルート直下のconceal.phpは、\n# 接続元が許可ホスト以外の場合は、404レスポンスを返す\n# ---\nRewriteCond %{ENV:is_allow} !^true$\nRewriteCond %{REQUEST_FILENAME} -f\nRewriteRule ^conceal.php$ - [R=404,L]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>　これで、以後テーマ側には手を入れる必要がなくなり、\u003Ccode>conceal.php\u003C\u002Fcode>だけでテーマの秘匿化処理を行うことができるようになる。この\u003Ccode>conceal.php\u003C\u002Fcode>は基本的にテーマに依存することなく共通の処理を行うので、およそどんなテーマでも\u003Ccode>functions.php\u003C\u002Fcode>に\u003Ccode>require\u003C\u002Fcode>してしまえば同等の秘匿化効果が得られるようになる。\u003Cbr \u002F>\n　本当は、この\u003Ccode>conceal.php\u003C\u002Fcode>で行うような処理はプラグイン化してしまうのが最適解なのだが、今回はテーマの秘匿化におけるカスタマイズポイントを総覧するという目的があるので、この方法で進めていくことにする。\u003C\u002Fp>\n\u003Ch2>テーマ名とテーマディレクトリパスを秘匿化する\u003C\u002Fh2>\n\u003Cp>　テーマ名が\u003Ccode>TwentyTwenty\u003C\u002Fcode>だと、そこからそのサイトがWordPress建てであることが類推されてしまう可能性がある。また、テーマ名に\u003Ccode>wp-\u003C\u002Fcode>のような接頭辞がついているテーマも同様だ。そこで、テーマ名とそのディレクトリパスを秘匿化したい。ただし、直接テーマのディレクトリ名を変更してしまうと、配布されているテーマを利用していた場合に、テーマのアップデート時などに不都合が発生することが起こり得る。今回は、オリジナルのテーマディレクトリパスはそのままにして保守性をキープした形で秘匿化を行ってみる。\u003C\u002Fp>\n\u003Cp>　新しいテーマディレクトリ名を\u003Ccode>\u002Fassets\u002Fview\u003C\u002Fcode>にしてみる。まず、\u003Ccode>conceal.php\u003C\u002Fcode>に次のフィルターフックを追加する。\u003C\u002Fp>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">&#x3C;?\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">php\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">\u002F\u002F 新しいテーマディレクトリ名の設定\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">defined\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'MY_THEME_DIR'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ) \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">or\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> define\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'MY_THEME_DIR'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'view'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">add_filter\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'theme_root_uri'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">function\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( $theme_root_uri, $siteurl, $stylesheet_or_template ) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    return\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> is_admin\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">() \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">?\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> $theme_root_uri \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">:\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> WP_CONTENT_URL\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\"> .\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'\u002F'\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">.\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> MY_THEME_DIR\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">10\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">3\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">add_filter\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'stylesheet_directory_uri'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">function\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( $stylesheet_dir_uri, $stylesheet, $theme_root_uri ) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    return\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> is_admin\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">() \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">?\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> $stylesheet_dir_uri \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">:\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> $theme_root_uri;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">10\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">3\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">add_filter\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'template_directory'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">function\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( $template_dir, $template, $theme_root ) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    return\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> is_admin\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">() \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">?\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> $template_dir \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">:\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> WP_CONTENT_DIR\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\"> .\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'\u002F'\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">.\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> MY_THEME_DIR\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">10\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">3\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">add_filter\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'template_directory_uri'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">function\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( $template_dir_uri, $template, $theme_root_uri ) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    return\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> is_admin\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">() \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">?\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> $template_dir_uri \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">:\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> $theme_root_uri;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">10\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">3\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>　次に、\u003Ccode>.htaccess\u003C\u002Fcode>に新しいテーマディレクトリパスを実体であるテーマディレクトリ\u003Ccode>twentytwenty\u003C\u002Fcode>にリライトする設定を行う。合わせて、テーマ内の静的リソースへのアクセス制限も追加する。\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-aconf\"># ---\n# 9. テーマディレクトリパスへのルーティング設定\n# テーマ内の静的リソースへのアクセスは制限する\n# ---\nRewriteCond %{ENV:is_allow} !^true$ [OR]\nRewriteCond %{ENV:is_allow_referer} !^true$\nRewriteRule ^assets\u002Fview\u002F(^.(.*)|readme.txt|screenshot.png|package(|-lock).json)$ - [R=404,L]\nRewriteCond %{ENV:is_allow} ^true$ [OR]\nRewriteCond %{ENV:is_allow_referer} ^true$\nRewriteRule ^assets\u002Fview\u002F(.*)$ \u002Fapp\u002Fwp-content\u002Fthemes\u002Ftwentytwenty\u002F$1 [L]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>　これでテーマディレクトリが擬似パスに変更され、WordPressページのHTML内の\u003Ccode>&lt;head&gt;\u003C\u002Fcode>要素中のリソースパス\u003Ccode>https:\u002F\u002F{Domain_Name}\u002Fassets\u002Fthemes\u002Ftwentytwenty\u002Fstyle.css\u003C\u002Fcode>などは、\u003Ccode>https:\u002F\u002F{Domain_Name}\u002Fassets\u002Fview\u002Fstyle.css\u003C\u002Fcode>等に書き換わる。\u003Cbr \u002F>\n　また、許可された接続元以外からは\u003Ccode>https:\u002F\u002F{Domain_Name}\u002Fassets\u002Fview\u002Freadme.txt\u003C\u002Fcode>などを覗かれることもなくなる。\u003C\u002Fp>\n\u003Ch2>\u003Ccode>&lt;head&gt;\u003C\u002Fcode>要素のクリーンアップと秘匿化\u003C\u002Fh2>\n\u003Cp>　WordPressが生成するHTMLの\u003Ccode>&lt;head&gt;\u003C\u002Fcode>要素には、そのサイトがWordPressを使っていることを匂わすタグがデフォルトでいくつか出力される。下記がその一例だ。\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>&lt;link rel=\"dns-prefetch\" href=\"\u002F\u002Fs.w.org\"&gt;\u003C\u002Fcode> 等のWordPress専用のCDNを利用する際のパフォーマンスを向上するためにDNSを先読みする（DNSプリフェッチ）タグ\u003C\u002Fli>\n\u003Cli>\u003Ccode>&lt;link rel=\"alternate\" type=\"application\u002Frss+xml\" title=\"{サイトのタイトル} » フィード\" href=\"https:\u002F\u002F{Domain_Name}\u002Ffeed\u002F\"&gt;\u003C\u002Fcode> 等の投稿やコメントのXMLフィード出力用のタグ\u003C\u002Fli>\n\u003Cli>\u003Ccode>&lt;script src=\"https:\u002F\u002F{Domain_Name}\u002Fapp\u002Fwp-includes\u002Fjs\u002Fwp-emoji-release.min.js?ver=5.3.2\" type=\"text\u002Fjavascript\" defer=\"\"&gt;&lt;\u002Fscript&gt;\u003C\u002Fcode> 等のWordPress専用絵文字を利用するためのタグ\u003C\u002Fli>\n\u003Cli>\u003Ccode>&lt;link rel=\"stylesheet\" id=\"wp-block-library-css\" href=\"https:\u002F\u002F{Domain_Name}\u002Fapp\u002Fwp-includes\u002Fcss\u002Fdist\u002Fblock-library\u002Fstyle.min.css?ver=5.3.2\" media=\"all\"&gt;\u003C\u002Fcode> WordPress5.x以降で実装されたブロックエディタ「Gutenberg」用のスタイルシート読み込みタグ\u003C\u002Fli>\n\u003Cli>\u003Ccode>&lt;link rel=\"https:\u002F\u002Fapi.w.org\u002F\" href=\"https:\u002F\u002F{Domain_Name}\u002Findex.php\u002Fwp-json\u002F\"&gt;\u003C\u002Fcode> WP REST APIを利用するためのタグ\u003C\u002Fli>\n\u003Cli>\u003Ccode>&lt;link rel=\"EditURI\" ...\u003C\u002Fcode> と \u003Ccode>&lt;link rel=\"wlwmanifest\" ...\u003C\u002Fcode> は外部投稿アプリ連携用のタグ\u003C\u002Fli>\n\u003Cli>\u003Ccode>&lt;meta name=\"generator\" content=\"WordPress 5.3.2\"&gt;\u003C\u002Fcode> はこのページはWordPressが生成していることを宣言するタグ\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>　基本的に上記にリスト化したタグは、サイトを秘匿化するにあたっては全て出力を抑止するべきだろう。とは言っても、コメント機能やブロックエディタを利用するサイトを構築する場合は、切り捨てられないタグも出てくるので、そこは秘匿化効果が限定的になることを認識しながら取捨選択してほしい。\u003C\u002Fp>\n\u003Cp>　私見になるが、特にインタラクティブ性を売りにするようなWebサービスでもない限りはWordPressサイトでコメント機能を有効にするのは無駄だと感じている。よっぽどのPVとAUがなければほとんどコメントなどつかないにもかかわらず、常時スパムの温床になるため、Akismetsなどのプラグインが必須になってリスクばかりが高くなるからだ。コメントのやり取りをしたいのならば、投稿をソーシャルメディアに引用してそちらでやった方が、記事拡散力も高く有用だと思えるのだ。\u003Cbr \u002F>\n　という個人的嗜好性もあって、今回のチャレンジではコメント機能は利用しないという方向性で、原則的にWordPressを匂わすタグは全て出力しないようにする。\u003C\u002Fp>\n\u003Cp>　なお、\u003Ccode>twentytwenty\u003C\u002Fcode>などのバンドルテーマTwentyシリーズでは、\u003Ccode>&lt;head&gt;\u003C\u002Fcode>要素内に\u003Ccode>&lt;link rel=\"profile\" href=\"https:\u002F\u002Fgmpg.org\u002Fxfn\u002F11\"&gt;\u003C\u002Fcode>というタグがある。これ自体はWordPressを匂わすものではないが、特段必要性もないタグなので、削除してしまいたい。しかし、この記述はテーマディレクトリ内の\u003Ccode>header.php\u003C\u002Fcode>中にハードコーディングされているので、WordPressのフィルタ関数等では削除できない。まぁ、手取り早く対応するなら\u003Ccode>header.php\u003C\u002Fcode>から該当する記述を削除するのが良いだろう。\u003Cbr \u002F>\n　今回は、極力オリジンソースには手を加えたくないので、\u003Ccode>conceal.php\u003C\u002Fcode>側で強引に削除している。\u003C\u002Fp>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">defined\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'USE_REST_API'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ) \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">or\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> define\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'USE_REST_API'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">false\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">add_filter\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_resource_hints'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">function\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( $hints, $relation_type ) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    if\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'dns-prefetch'\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\"> ===\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> $relation_type ) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">        return\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> array_diff\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\">wp_dependencies_unique_hosts\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(), $hints );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    return\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> $hints;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">10\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">2\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">add_action\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'after_setup_theme'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">function\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">() {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    global\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> $_wp_theme_features;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    \u002F\u002F Prevent output all feed links\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    if\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ( \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">array_key_exists\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'automatic-feed-links'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, $_wp_theme_features ) ) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">        unset\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( $_wp_theme_features[\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'automatic-feed-links'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">] );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    \u002F\u002F Disable comment\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    if\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ( \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">array_key_exists\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'html5'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, $_wp_theme_features ) ) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">        unset\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( $_wp_theme_features[\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'html5'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">][\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'comment-form'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">] );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">        unset\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( $_wp_theme_features[\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'html5'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">][\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'comment-list'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">] );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    ob_start\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">function\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( $buffer ) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">        \u002F\u002F Remove the `&#x3C;link rel=\"profile\" href=\"https:\u002F\u002Fgmpg.org\u002Fxfn\u002F11\">`\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        $buffer \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> str_replace\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"&#x3C;link rel=\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\"\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">profile\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\"\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\"> href=\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\"\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">https:\u002F\u002Fgmpg.org\u002Fxfn\u002F11\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\"\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">>\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\n\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">''\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, $buffer );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">        \u002F\u002F Remove the `id='twentytwenty-*'` attributes\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        $buffer \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> preg_replace\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#DBEDFF\">id=(\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D;font-weight:bold\">\\'\u003C\u002Fspan>\u003Cspan style=\"color:#DBEDFF\">|\")twentytwenty\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D;font-weight:bold\">\\-\u003C\u002Fspan>\u003Cspan style=\"color:#DBEDFF\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">*\u003C\u002Fspan>\u003Cspan style=\"color:#DBEDFF\">?(\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D;font-weight:bold\">\\'\u003C\u002Fspan>\u003Cspan style=\"color:#DBEDFF\">|\")\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\u002F'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">''\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, $buffer );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">        return\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> $buffer;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    } );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">PHP_INT_MAX\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">add_action\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'shutdown'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">function\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">() {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    ob_end_flush\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">();\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">PHP_INT_MAX\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">add_action\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'init'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">function\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">() {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    \u002F\u002F Remove feed links\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">    remove_action\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_head'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'feed_links'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">2\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">    remove_action\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_head'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'feed_links_extra'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">3\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    \u002F\u002F Remove emoji\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">    remove_action\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_head'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'print_emoji_detection_script'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">7\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">    remove_action\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'admin_print_scripts'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'print_emoji_detection_script'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">    remove_action\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_print_styles'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'print_emoji_styles'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">    remove_action\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'admin_print_styles'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'print_emoji_styles'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">    remove_filter\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'the_content_feed'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_staticize_emoji'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">    remove_filter\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'comment_text_rss'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_staticize_emoji'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">    remove_filter\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_mail'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_staticize_emoji_for_email'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    \u002F\u002F Remove Others\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">    remove_action\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_head'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'rsd_link'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">    remove_action\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_head'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wlwmanifest_link'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">    remove_action\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_head'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'adjacent_posts_rel_link_wp_head'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">    remove_action\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_head'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_generator'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">    remove_action\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_head'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'rel_canonical'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">    remove_action\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_head'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_shortlink_wp_head'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    \u002F\u002F Remove Embeds\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">    remove_action\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_head'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_oembed_add_discovery_links'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">    remove_action\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_head'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_oembed_add_host_js'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    if\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ( \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">!\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> USE_REST_API\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">        \u002F\u002F Remove rest api links\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">        remove_action\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_head'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'rest_output_link_wp_head'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">} );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">add_action\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'widgets_init'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">function\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">() {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    \u002F\u002F Remove recent comment style\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    global\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> $wp_widget_factory;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">    remove_action\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_head'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, [ $wp_widget_factory\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">->\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">widgets[\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'WP_Widget_Recent_Comments'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">], \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'recent_comments_style'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ] );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">} );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">add_filter\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'rest_pre_dispatch'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">function\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( $result, $wp_rest_server, $request ) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    if\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ( \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">USE_REST_API\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\"> ||\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\"> !\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> is_admin\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">() ) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        $namespaces \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> $request\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">->\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\">get_route\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">();\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">        \u002F\u002F oembed\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">        if\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ( \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">strpos\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( $namespaces, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'oembed\u002F'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ) \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">===\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> 1\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">            return\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> $result;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">        \u002F\u002F Jetpack\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">        if\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ( \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">strpos\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( $namespaces, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'jetpack\u002F'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ) \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">===\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> 1\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">            return\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> $result;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">        \u002F\u002F BlockEditor\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">        if\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ( \u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\">current_user_can\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'edit_posts'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ) ) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">            return\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> $result;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    return\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\"> new\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> WP_Error\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'rest_disabled'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\">__\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'The REST API on this site has been disabled.'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ), [ \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'status'\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\"> =>\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> rest_authorization_required_code\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">() ] );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">10\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">3\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">add_action\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp_enqueue_scripts'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">function\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">() {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    if\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ( \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">!\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> is_admin\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">() ) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">        \u002F\u002F Remove script tags for block editor\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">        wp_dequeue_style\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp-block-library'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">    wp_dequeue_style\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'wp-block-library-theme'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">} );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>　REST APIの利用だけは限定的に切り替えられるようにグローバル定数を設けてある。利用する場合はホワイトリスト形式で許可する名前空間をマッチさせる必要がある。\u003Cbr \u002F>\n　そして、クリーンアップ後の\u003Ccode>&lt;head&gt;\u003C\u002Fcode>要素のHTMLソースは下記のようになった。\u003C\u002Fp>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">&#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">head\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">meta\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> charset\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"UTF-8\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">meta\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> name\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"viewport\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> content\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"width=device-width, initial-scale=1.0\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">title\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>{サイトのタイトル} – {キャッチフレーズ}&#x3C;\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">title\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">link\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> rel\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"stylesheet\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> href\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"https:\u002F\u002F{Domain_Name}\u002Fassets\u002Fview\u002Fstyle.css?ver=1.1\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> media\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"all\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">style\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>(TwentyTwentyテーマのインラインスタイル...)&#x3C;\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">style\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">link\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> rel\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"stylesheet\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> href\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"https:\u002F\u002F{Domain_Name}\u002Fassets\u002Fview\u002Fprint.css?ver=1.1\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> media\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"print\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">script\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> src\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"https:\u002F\u002F{Domain_Name}\u002Fassets\u002Fview\u002Fassets\u002Fjs\u002Findex.js?ver=1.1\"\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> async\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>&#x3C;\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">script\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">script\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>document.documentElement.className \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> document.documentElement.className.\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\">replace\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'no-js'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'js'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );&#x3C;\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">script\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">&#x3C;\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D\">head\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>　だいぶスッキリして、もはやWordPressの面影はない。\u003C\u002Fp>\n\u003Ch2>wp-includesとwp-adminディレクトリの秘匿化\u003C\u002Fh2>\n\u003Cp>　WordPressでは、wp-includesディレクトリとwp-adminディレクトリの下にあるCSSやJavaScript等の静的リソースを読み込んでページを表示するケースが多い。これらのディレクトリパスを持ったリソースが使用されると、ページのHTML内にそのリソースパスが出力されてしまい、せっかくWordPressのインストールディレクトリを変更しているのにインストールパスまでが露見してしまい、セキュリティ的にも都合が悪い。\u003Cbr \u002F>\n　そこで、それらwp-includes\u002Fとwp-admin\u002Fへのルーティングパスを、それぞれassets\u002Finc\u002Fとassets\u002Fmanage\u002Fに変更する。まずは\u003Ccode>.htaccess\u003C\u002Fcode>に下記の設定を追加しよう。\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-htaccess\"># ---\n# 10. wp-includes\u002Fとwp-admin\u002Fディレクトリパスへのルーティング設定\n# ---\nRewriteRule ^assets\u002Finc\u002F(.*)$ \u002Fapp\u002Fwp-includes\u002F$1 [L]\nRewriteRule ^assets\u002Fmanage\u002F(.*)$ \u002Fapp\u002Fwp-admin\u002F$1 [L]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>　そして、\u003Ccode>conceal.php\u003C\u002Fcode>に下記の関数を追加しておこう。\u003C\u002Fp>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">defined\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'ALT_WP_INCLUDES_DIR'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ) \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">or\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> define\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'ALT_WP_INCLUDES_DIR'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'inc'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">defined\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'ALT_WP_ADMIN_DIR'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ) \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">or\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> define\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'ALT_WP_ADMIN_DIR'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'manage'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">function\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> filter_alt_dirs\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( $src ) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    $src \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> preg_replace\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'@\u002Fapp\u002Fwp-includes\u002F@'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'\u002F'\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">.\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> basename\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">WP_CONTENT_DIR\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ) \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">.\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'\u002F'\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">.\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> ALT_WP_INCLUDES_DIR\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\"> .\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'\u002F'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, $src );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    $src \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> preg_replace\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'@\u002Fapp\u002Fwp-admin\u002F@'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'\u002F'\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">.\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> basename\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">WP_CONTENT_DIR\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> ) \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">.\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'\u002F'\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">.\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> ALT_WP_ADMIN_DIR\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\"> .\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'\u002F'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, $src );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    return\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> $src;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>　これで、準備完了だ。\u003C\u002Fp>\n\u003Ch2>ページ内読み込みリソースを最適化する\u003C\u002Fh2>\n\u003Cp>　WordPressで出力されるページに読み込まれるCSSやJavaScriptといった外部リソースは、ビルトイン関数の\u003Ccode>wp_enqueue_style()\u003C\u002Fcode>や\u003Ccode>wp_enqueue_script()\u003C\u002Fcode>で必要に応じて動的にインクルードされる。読み込まれるリソースは使用しているテーマやプラグインによって千差万別なので、一律で最適化するのは難しい部分でもある。\u003Cbr \u002F>\n　ここでは、HTML中に出力される\u003Ccode>&lt;link&gt;\u003C\u002Fcode>や\u003Ccode>&lt;script&gt;\u003C\u002Fcode>タグのリソースパス（URL）を最適化しつつ、秘匿化が必要なものはフィルタリングしていく。\u003Cbr \u002F>\n　前項で追加したフィルタ関数を使うのだ。\u003Ccode>conceal.php\u003C\u002Fcode>に下記のコードを追加しよう。\u003C\u002Fp>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">add_filter\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'script_loader_src'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">function\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( $src, $handle ) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    return\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> filter_alt_dirs\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( $src );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">PHP_INT_MAX\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">2\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">add_filter\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'style_loader_src'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">function\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( $src, $handle ) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    return\u003C\u002Fspan>\u003Cspan style=\"color:#B392F0\"> filter_alt_dirs\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( $src );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">PHP_INT_MAX\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">2\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>　WordPressにログインした状態で、ページのHTMLを覗いてみると、\u003Ccode>\u002Fapp\u002Fwp-includes\u002F...\u003C\u002Fcode>や\u003Ccode>\u002Fapp\u002Fwp-admin\u002F...\u003C\u002Fcode>のURLで読み込まれていたリソースのパスが変更されていることが確認できるだろう。\u003C\u002Fp>\n\u003Ch2>Twentyシリーズテーマ固有のフッターやメタ情報の最適化\u003C\u002Fh2>\n\u003Cp>　「TwentyTwenty」等のTwentyシリーズテーマのフッターやサイドバーには、デフォルトで『Powered by WordPress』の表記や、「メタ情報」ウィジェットによる各種WordPress関連リンクなどが設置されている。これらは、サイトを秘匿化するうえで不要なコンテンツなので、削除してしまおう。\u003Cbr \u002F>\n　まず、「メタ情報」欄については、管理画面にログインして[外観]-[ウィジェット]を開き、「フッター2」のウィジェットグループから「メタ情報」のウィジェットを削除するだけだ。\u003Cbr \u002F>\n　次に、フッターの『Powered by WordPress』の表記なのだが、これは\u003Ccode>twentytwenty\u002Ffooter.php\u003C\u002Fcode>のファイル内にハードコーディングされてしまっているので、そのファイルから直接削除するのが手っ取り早くオススメする。ただ、オリジンテーマ側のファイルには極力手を加えたくないというのであれば、\u003Ccode>conceal.php\u003C\u002Fcode>の\u003Ccode>'after_setup_theme'\u003C\u002Fcode>のアクションフックに下記のような処理を追加することでも対応可能だ。\u003C\u002Fp>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">add_action\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'after_setup_theme'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">function\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">() {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    (\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">...\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">省略\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">...\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    ob_start\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">function\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( $buffer ) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">        \u002F\u002F Remove the `&#x3C;link rel=\"profile\" href=\"https:\u002F\u002Fgmpg.org\u002Fxfn\u002F11\">`\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        $buffer \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> str_replace\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"&#x3C;link rel=\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\"\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">profile\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\"\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\"> href=\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\"\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">https:\u002F\u002Fgmpg.org\u002Fxfn\u002F11\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\\"\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">>\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">\\n\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">''\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, $buffer );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">        \u002F\u002F Remove the `id='twentytwenty-*'` attributes\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        $buffer \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> preg_replace\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">'\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#DBEDFF\">id=(\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D;font-weight:bold\">\\'\u003C\u002Fspan>\u003Cspan style=\"color:#DBEDFF\">|\")twentytwenty\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D;font-weight:bold\">\\-\u003C\u002Fspan>\u003Cspan style=\"color:#DBEDFF\">.\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">*\u003C\u002Fspan>\u003Cspan style=\"color:#DBEDFF\">?(\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D;font-weight:bold\">\\'\u003C\u002Fspan>\u003Cspan style=\"color:#DBEDFF\">|\")\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\u002F'\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">''\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, $buffer );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">        \u002F\u002F Remove \"Powered by WordPress\" on the footer\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        $buffer \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> preg_replace\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">( \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#DBEDFF\">&#x3C;p class=\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D;font-weight:bold\">\\\"\u003C\u002Fspan>\u003Cspan style=\"color:#DBEDFF\">powered-by-wordpress\u003C\u002Fspan>\u003Cspan style=\"color:#85E89D;font-weight:bold\">\\\"\u003C\u002Fspan>\u003Cspan style=\"color:#DBEDFF\">>.\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">*\u003C\u002Fspan>\u003Cspan style=\"color:#DBEDFF\">?&#x3C;\\!-- \u003C\u002Fspan>\u003Cspan style=\"color:#85E89D;font-weight:bold\">\\.\u003C\u002Fspan>\u003Cspan style=\"color:#DBEDFF\">powered-by-wordpress -->\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\u002Fs\"\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, \u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">''\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">, $buffer );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">        return\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> $buffer;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    } );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}, \u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">PHP_INT_MAX\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> );\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>　ただし、このやり方は、将来的にオリジンテーマ側のアップデートによってフッター部分のHTML構造が変更されてしまう等で、書き換え条件がマッチしなくなると、削除されずに表示されてしまうリスクがあるので注意が必要である。\u003C\u002Fp>\n\u003Cp>　さて、ここまでの秘匿化状態で、再度\u003Ca href=\"\u002Fwp-checker.php\">WordPressサイトチェッカー\u003C\u002Fa>でサイトを確認してみると、\u003C\u002Fp>\n\u003Cul>\n\u003Cli>インストールディレクトリ直下に\u003Ccode>wp-login.php\u003C\u002Fcode>が存在している\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>　以外の項目は緑色になった。これで、テーマ側の基本的な秘匿化は一通り完了だ。\u003C\u002Fp>\n\u003Cp>　次の章では、プラグイン側の秘匿化を行っていくことにする。\u003C\u002Fp>\n\u003Cdiv style=\"display:flex;flex-wrap:no-wrap;justify-content:space-between;margin:2em auto;\">\n\u003Cdiv>\u003Ca href=\"\u002Fpart1-how-to-install-to-keep-wordpress-confidential\">← 第1章 WordPressのインストールで差をつけろ！\u003C\u002Fa>\u003C\u002Fdiv>\n\u003Cdiv>\u003Ca href=\"\u002Fpart3-way-to-conceal-the-plugins\">→ 第3章 プラグインを隠蔽せよ\u003C\u002Fa>\u003C\u002Fdiv>\n\u003C\u002Fdiv>\n",[275,277,279,281,284,286,288,291,294,297],{"slug":276,"name":276},"conceal",{"slug":278,"name":278},"hide",{"slug":280,"name":280},"security",{"slug":282,"name":283},"theme","Theme",{"slug":285,"name":285},"twentytwenty",{"slug":74,"name":287},"WordPress",{"slug":289,"name":290},"%e3%82%bb%e3%82%ad%e3%83%a5%e3%83%aa%e3%83%86%e3%82%a3","セキュリティ",{"slug":292,"name":293},"%e3%83%86%e3%83%bc%e3%83%9e","テーマ",{"slug":295,"name":296},"%e7%a7%98%e5%8c%bf%e5%8c%96","秘匿化",{"slug":298,"name":299},"%e9%9a%a0%e8%94%bd","隠蔽",[301,308,315,322],{"slug":302,"title":303,"date":304,"excerpt":305,"image":71,"categories":306},"part4-conceal-of-registration-or-authentication-on-wordpress","第４章 WordPressの登録・認証系の秘匿化","2020-03-26T02:06:28","前章までの施策によって、フロントエンド側に出力されるコンテンツ系ページからWordPressっぽさを排除できた。だが、ログイン画面などの認証系周りは未施策なため、この章ではその辺の秘匿化を行なっていく。 まず、現状の…",[307],{"slug":74,"name":75},{"slug":309,"title":310,"date":311,"excerpt":312,"image":71,"categories":313},"part3-way-to-conceal-the-plugins","第3章 WordPressのプラグインを隠蔽せよ","2020-02-28T17:26:04","前章までの秘匿化によって、WebサイトからかなりWordPressの存在を匂わす要素がなくなって来たが、完全な秘匿化まではまだまだ足りない部分がある。その一つがプラグインだ。 基本的にWordPressはブログツール…",[314],{"slug":74,"name":75},{"slug":316,"title":317,"date":318,"excerpt":319,"image":71,"categories":320},"part1-how-to-install-to-keep-wordpress-confidential","第1章 WordPressのインストールで差をつけろ！","2020-02-03T15:06:21","まずはWordPressをインストールするのだが、このインストール時点での各種設定を工夫することで、「WordPressっぽさ」をかなり排除できるのだ。WordPressのスタートアップでは、このフェーズが「導入敷居を…",[321],{"slug":74,"name":75},{"slug":67,"title":68,"date":69,"excerpt":70,"image":71,"categories":323},[324],{"slug":74,"name":75},{"slug":316,"title":317,"date":318,"excerpt":319,"image":71,"categories":326},[327],{"slug":74,"name":75},{"slug":309,"title":310,"date":311,"excerpt":312,"image":71,"categories":329},[330],{"slug":74,"name":75},1793391397373]