Google XML Sitemapsプラグインの更新日時通知のバグ?

Google XML Sitemapsプラグイン

Google XML Sitemaps (XML Sitemaps / XML Sitemap Generator for WorePress)プラグインはWordPress用のSitemap出力プラグインとしては最もメジャーです。ときどき(何年かに1度程度)脆弱性が見つかって大騒ぎになりますが基本的には安定して動作します。2022年春にも脆弱性で一時的に非公開になり、比較的すぐに修正版がリリースされました。
そのときにメンテナが変わったのと追加機能とGoogle AnalyticsのTIDの入力を必須にしたことが不信感と新たなバグを生んでしまいました。作者(メンテナ)の人は新しいバージョンを出しては問題点は修正したと主張するのですが、この記事を書いている2022年8月7日時点の最新版 v4.1.5 でも完全には直っていません。ただし、WordPress用サイトマップ出力機能自体は正常のようです。問題なのは更新通知機能かその結果の表示部分になります。なお、v4.1.1で追加になったとされるWooCommerce based sitemapについてはどのようなものかも知りませんし機能を評価できないためこの記事では無視させていただきます。

v4.1.3ではGA-TIDを入力しないとプラグインの設定が保存されないという嫌な不具合があったため実質的にGA-TIDに何らかの文字列を入力するのが必須でした。設定が保存されない不具合はその次のバージョンで修正されているのでGA-TID周りで残る不具合はこの記事の以下のものです。

Google XML Sitemapsプラグインの更新日時通知 1
WordPressの管理パネルにログインし、左列の「設定」から「XML-Sitemap」をクリック。
中央列の「基本的な設定」の「Notify Google about updates of your site」という項目にチェックが入っていることを確認する。これが「投稿」「固定記事」を公開または更新したときにGoogleに更新を通知する機能のスイッチです。チェックボックスを変更した場合はページの一番下にある「更新を設定」をクリックする。
この状態で新しい「投稿」「固定記事」を公開したり、既存の「投稿」「固定記事」を更新する。すると内部的にGoogleに更新が通知されてこの画面の上部の「○○に開始されたpingの結果」の日時がその公開・更新日時になって且つ検索エンジンに通知された旨が表示されるのが正しい動作の筈。ところが、待てど暮せど「通知されました」にはならない。「検索エンジンは通知されていません。あなたのサイトマップを知らせるには投稿を書いてください」のまま。
これだと更新を通知する機能が働いていないかも。本当かしら?
「デバッグ機能」をクリックする。

Google XML Sitemapsプラグインの更新日時通知 2
ズラズラ表示される。サイトマップの量にも拠るがページ全体の中程まで下にスクロールする。

参考: /wp-content/plugins/google-sitemap-generator/sitemap-core.php の一部
public function init_options() {

        $this->options                       = array();
        $this->options['sm_b_ping']          = true; // Auto ping Google .
        $this->options['sm_b_stats']         = false; // Send anonymous stats .
        $this->options['sm_b_autozip']       = true; // Try to gzip the output .
        $this->options['sm_b_memory']        = ''; // Set Memory Limit (e.g. 16M) .
        $this->options['sm_b_time']          = -1; // Set time limit in seconds, 0 for unlimited, -1 for disabled .
        $this->options['sm_b_style_default'] = true; // Use default style .
        $this->options['sm_b_style']         = ''; // Include a stylesheet in the XML .
        $this->options['sm_b_baseurl']       = ''; // The base URL of the sitemap .
        $this->options['sm_b_robots']        = true; // Add sitemap location to WordPress' virtual robots.txt file .
        $this->options['sm_b_html']          = true; // Include a link to a html version of the sitemap in the XML sitemap .
        $this->options['sm_b_exclude']       = array(); // List of post / page IDs to exclude .
        $this->options['sm_b_exclude_cats']  = array(); // List of post / page IDs to exclude .

        $this->options['sm_in_home']        = true; // Include homepage .
        $this->options['sm_in_posts']       = true; // Include posts .
        $this->options['sm_in_posts_sub']   = false; // Include post pages (<!--nextpage--> tag) .
        $this->options['sm_in_pages']       = true; // Include static pages .
        $this->options['sm_in_cats']        = false; // Include categories .
        $this->options['sm_product_tags']   = true; // Hide product tags in sitemap .
        $this->options['sm_in_product_cat'] = true; // Include product categories .
        $this->options['sm_in_arch']        = false; // Include archives .
        $this->options['sm_in_auth']        = false; // Include author pages .
        $this->options['sm_in_tags']        = false; // Include tag pages .
        $this->options['sm_in_tax']         = array(); // Include additional taxonomies .
        $this->options['sm_in_customtypes'] = array(); // Include custom post types .
        $this->options['sm_in_lastmod']     = true; // Include the last modification date .
        $this->options['sm_b_sitemap_name'] = 'sitemap'; // Name of custom sitemap.
        $this->options['sm_cf_home']        = 'daily'; // Change frequency of the homepage .
        $this->options['sm_cf_posts']       = 'monthly'; // Change frequency of posts .
        $this->options['sm_cf_pages']       = 'weekly'; // Change frequency of static pages .
        $this->options['sm_cf_cats']        = 'weekly'; // Change frequency of categories .
        $this->options['sm_cf_product_cat'] = 'weekly'; // Change frequency of categories .
        $this->options['sm_cf_auth']        = 'weekly'; // Change frequency of author pages .
        $this->options['sm_cf_arch_curr']   = 'daily'; // Change frequency of the current archive (this month) .
        $this->options['sm_cf_arch_old']    = 'yearly'; // Change frequency of older archives .
        $this->options['sm_cf_tags']        = 'weekly'; // Change frequency of tags .

        $this->options['sm_pr_home']        = 1.0; // Priority of the homepage .
        $this->options['sm_pr_posts']       = 0.6; // Priority of posts (if auto prio is disabled) .
        $this->options['sm_pr_posts_min']   = 0.2; // Minimum Priority of posts, even if autocalc is enabled .
        $this->options['sm_pr_pages']       = 0.6; // Priority of static pages .
        $this->options['sm_pr_cats']        = 0.3; // Priority of categories .
        $this->options['sm_pr_product_cat'] = 0.3; // Priority of categories .
        $this->options['sm_pr_arch']        = 0.3; // Priority of archives .
        $this->options['sm_pr_auth']        = 0.3; // Priority of author pages .
        $this->options['sm_pr_tags']        = 0.3; // Priority of tags .

        $this->options['sm_i_donated']           = false; // Did you donate? Thank you! :) .
        $this->options['sm_i_hide_donated']      = false; // And hide the thank you.. .
        $this->options['sm_i_install_date']      = time(); // The installation date .
        $this->options['sm_i_hide_survey']       = false; // Hide the survey note .
        $this->options['sm_i_hide_note']         = false; // Hide the note which appears after 30 days .
        $this->options['sm_i_hide_works']        = false; // Hide the 'works?' message which appears after 15 days .
        $this->options['sm_i_hide_donors']       = false; // Hide the list of donations .
        $this->options['sm_i_hash']              = substr( sha1( sha1( get_bloginfo( 'url' ) ) ), 0, 20 ); // Partial hash for GA stats, NOT identifiable! .
        $this->options['sm_i_tid']               = '';
        $this->options['sm_i_lastping']          = 0; // When was the last ping .
        $this->options['sm_i_supportfeed']       = true; // shows the support feed .
        $this->options['sm_i_supportfeed_cache'] = 0; // Last refresh of support feed .
        $this->options['sm_links_page']          = 10; // Link per page support with default value 10. .
    }

Google XML Sitemapsプラグインの更新日時通知 3
Sitemap Configの「sm_b_ping」が更新日時を検索エンジンに通知する機能。1になっていればオン。「sm_i_tid」がGoogle AnalyticsのTIDの値。このTIDはGoogleへの更新の通知には本来はまったく関係ないのだが、この記事では関係あるので憶えておいて欲しい。その下の「sm_i_lastping」が最も直前に検索エンジンに更新日時を通知した日時。要するに最新のping送信日時。
画像のようにTIDが空で、ping送信日時も空。

Google XML Sitemapsプラグインの更新日時通知 4
改めてXML Sitemapsプラグインの設定画面に戻ります。
本来は関係ない筈の設定項目である「基本的な設定」の「Add Google Analytics TID」のテキストボックスに、正しくは所有しているGoogle AnalyticsのTIDを入力します。2022年春までであれば多くは?UA-XXXXXXXXX-1というID、Analitics 4プロパティに変更済みなら "G-英数字"?
ただ、XML Sitemapsで普通にサイトマップの出力機能を使う+更新日時を通知する(Ping送信)だけであれば要らない筈の情報。ここはテキトーな数字を入力する。 「1」とかで十分じゃないかしら?
入力したら、ページの一番下にある「更新を設定」をクリックする。

Google XML Sitemapsプラグインの更新日時通知 5
ページの上部に「設定を更新しました。」が表示されることを確認。
その下、「○○○に開始されたpingの結果」に表示されるのは最後に投稿または固定記事を公開/更新した日時なのでこれは設定変更前と変わらない筈。
さらにその下、今度は「Googleは変更について正しく通知されました」に変わった。
先程はこの日時のPing送信が「通知されていません」だったのに、真逆の「通知されました」になった。どっち?通知されてたの?アタマ抱えるよね。

Google XML Sitemapsプラグインの更新日時通知 6
再び「デバッグ機能」をクリックした。
「sm_i_tid」は Google Analitics TID欄に入力した値が表示された。(正常)
「sm_i_lastping」は変わらず「空」のまま。「通知されました」が正しいならその日時の値が入っていてもおかしくはないのだが・・・

Google XML Sitemapsプラグインの更新日時通知 7
ここで、「投稿」または「固定記事」の1つを編集して保存。これで更新日時の表示が変わる筈。
上の画像。「○○○に開始されたpingの結果」の日時表示が更新した日時に変わった。(正常)

Google XML Sitemapsプラグインの更新日時通知 8
さらにもう一回「デバッグ機能」をクリックした。
今回は、「sm_i_lastping」に値が入った。数字が10桁並んだの。この手の数字は大抵UNIX時間。人間が読める日時形式に変換すると1つ前の画面に表示された日時と合う(秒の一致までは確認できないけど)。
「sm_i_lastping」はバグか何かで値が表示されないというわけではなく正常に機能している?そうするとTID入力前にはPing送信はできていなかった?

画像は無いけどXML Sitemapsの設定画面に戻ってTIDを空にして「設定を更新」(保存)。そして「デバッグ機能」を表示。
今度は「sm_i_tid」が空、「sm_i_lastping」も空。最初に戻ったといえる。
これで、「sm_i_lastping」はTIDが空ではない状態で「投稿」「固定記事」を更新したら値が表示されるということは判った。ただし、この挙動ではTIDあり/TIDなし共に「本当にPing送信されたの?」というのは判断できないかも。

ここまで確認した限りでは、Ping送信をするならTID必須なのかもしれないしそうではないのかもしれない。作者(メンテナ)の人はv4.1.3でTIDの値を必須からオプションに変更したと主張しているがそれは間違っている可能性もある。ping送信のデバッグログが無いと判らないよね。
ただ、ping送信をしたいならTIDに何か値を入れれば良いらしいことも判った?のでこの記事みたいに「1」でも入れておけば良さそう。

GitHubのGoogle XML Sitemapsプラグインのソースの変更履歴を確認したところ、Ping送信でTIDの入力を必須としないための修正が6月13日に行われている。プラグインの2022年8月時点で最新版のv4.1.5は6月14日リリースでギリギリ間に合ったかと思いきやその修正は入っていない。つまり「残念」。

なお、XML SitemapsプラグインのPing送信は、記事の公開,更新,でその記事のURLを伝えるIndexNowのようなものではなく、「(何か変化があったことを伝える意図で)サイトマップのURLをGoogleに通知」するだけのもの。この機能が必須かといえばそうではない。
Googleさんはping通知を受けて、サイトマップを見に来る、サイトマップの各リンクURLののlastmodの日時を見て記事の登録或いは更新の直近のものを認識する。クローラーが直近に登録/更新のあった記事を見に来る。という流れだと思うが、 ウェブサイトのオーナーとしては「1秒でも早くサイトマップを読みに来て、次に1秒でも早くサイトマップを元にクローラーが来てくれて、1秒でも早く検索インデックスに登録して欲しい。」これは共通の思いだと思う。サイトマップをSearch Console(サチコ)に登録するところまでは大きなサイトでも小さなサイトでも差はほぼ無いと思うが、その後のサイトマップの読み込み頻度やクローラーがコンテンツを取り込みに来るまでの早さ、クローラーが来た後に検索インデックスに登録されるまでの早さというのは残念ながらウェブサイトによって優先度が異なるよう。ページ数が多くてコンテンツの追加や更新が多くて有用なコンテンツが多くて閲覧数が多いサイトはクローラーもすぐに来るしインデックス登録も早い。反対に、開設間もないウェブサイトだとかサチコに登録したばかり/サイトマップを登録したばかりのウェブサイトはサチコでURLを送信しようがPing (WebSub)で送信しようが全然クローラーが来ないとか検索インデックスに登録されないとかは発生する。

とはいえ、超弱小サイトの「がとらぼ」でもページ公開から数時間も経たずに検索インデックスに登録されるので、クローラーがなかなか来ないのは開設間もないウェブサイトとかサチコにサイトマップを登録してから暫く(数ヶ月)だけとかだとは思う。

最後に、サイトマップの出力機能が正常に機能しているかは http://自身のサイトのドメイン/sitemap.xml (これがXMLSitemapsプラグインの初期値) をブラウザで表示すればすぐに判る。このサイトマップ表示部分にはバグらしい動作は無い感じ。(カテゴリ関係でマイナーバグが報告されてはいるみたいだが??)
サイトマップの出力と、サイトマップ更新のPing送信と、検索インデックスに登録されること、はそれぞれ別の話。そこをゴッチャにすると解決するものも解決しなくなるし、そこを糞味噌で騒ぐとよく理解していない他の人を混乱させるのでご注意。

関連記事:

Redmi Note 9S向けにAndroid 12ベースのMIUI 13がリリースとシステムアプリ消し

Mi Bunny

2年前に発売されたXiaomiのRedmi Note 9SはAndroid 11更新提供こそXiaomiの中でも最速リリース組だったがAndroid 12ベースのMIUI 13は完全な後回し組となった。中国向けモデル、グローバル向けの新しめのモデルには今年の春以降に順次Android 12 + MIUI 13 (一部モデルはAndroid 11 + MIUI 13)のリリースが始まったがRedmi Note 9Sは2022年Q3ということで夏以降〜秋頃でいつになるかは判らないという状態。
と、思ったら7月下旬に8月前半中のリリースというスケジュールのリークがあった。なのでお盆休みかなと思ったら意外にも8月6日という早めのリリースとなった。欧州向けとグローバル向けが同時リリースかと思っていたらグローバル向けが先に出た。なお、リリースといっても8月6日時点ではMiパイロット向けなのでユーザー全員に提供されるものではありません。OTAで提供される更新であれば数日の内にMiパイロットに登録しているユーザーに順次提供されると思われますが、スマホ側でMiアカウントにログインしておく必要があります。OTAでない場合はRecoveryロムを別途入手してカスタムリカバリーで焼くという作業が必要かと思われます。8月6日のリリースはV13.0.2.0.SJWMIXMで、13.0.1.0はリリースにはなっていません。

2022年9月4日追記:
Recoveryだけでなく既にFastbootの提供も始まっているので、これまでのバージョンも含め通常であれば安定版のRecovery/Fastboot出揃って正式リリースとに進むということになる筈ですが、不思議なことにXiaomi CommunityではRedmi Note 9SのAndroid 12ベースのMIUI 13については全くのダンマリです。提供が始まったこともアナウンスされていません。OTAでの提供開始も確認できていません。他所の情報では「限定リリース」ということになっているので一部の国と地域では(OTAを含めて)提供が始まっている筈です。

2022年9月20日追記:
8月〜9月始めにXiaomiのコミュニティーの更新があったようで古い書き込みが読み出せなくなったのと検索システムが最適化されていないようで情報が探しにくくなっているようです。Redmi Note 9シリーズ(Note 9Sを含む)のファームウエア情報を纏めて提供されているスーパーモデレータのhappybuddhistさんが8月25日にアナウンスを出していました。
MIUI 13 Global Stable ROM v13.0.2.0.SJWMIXM with Android 12 for Redmi Note 9S Released: Download Now!
この記事本文ではOTAについては書かれていないのですが、コメントでhappybuddhistさんが、「リージョンを変更して再起動してから、もう一度確認してください。それでも OTA アップデートを受信しない場合は、ここからリカバリ ROM をダウンロードし、アップデータ アプリを介して手動でフラッシュすることができます。」と書いていることから、やはりOTAでの更新提供が始まっている国/地域があるようです。Android設定の「追加設定」から「地域」を開き日本以外の何処かの国(日本向けRedmi Note 9Sはグローバルロムなので少なくとも欧州(+南米の一部他)/インド/トルコ/ロシアは違う)を選択して「再起動してから」更新確認します。更新できたら日本に戻すのをお忘れなく。このことは5chのRedmi Note 9Sスレに書いたのですが「がとらぼ」に書くのを忘れてました。スミマセン
一部の国には「エジプト」が含まれるようです。
今回はメジャーバージョンの更新なので更新後にファクトリーリセットするかそれが無理ならキャッシュ削除を実行するべきでしょう。両方できない場合は更新から半日〜数日ほど変な挙動が発生することがあります。古いキャッシュが無くなれば殆どの変な挙動はなくなるでしょう。

Redmi Note 9S向けにAndroid 12ベースのMIUI 13がリリース 1
Android 11ベースのMIUI 12.5からAndroid 12ベースのMIUI 13になりました。更新後は古いAndroidのデータが残ってシステムだけが更新された状態です。AndroidやMIUIのメジャー更新時は「できるなら」初期化(ファクトリーリセット)した方がトラブルは少なくなります。この画像は初期化してAndroidの初期設定直後のホーム画面です。

Redmi Note 9S向けにAndroid 12ベースのMIUI 13がリリース 2
バージョン表示の画面。Android 12で且つMIUI 13.0.2であることが示されています。今回は8月のリリースですがAndroidセキュリティーパッチは7月度です。(8月6日時点でXiaomiスマホ向けで8月度のAndroid セキュリティーパッチ入りのファームウエアは数えられる程度のモデル向けにしか提供されていません。)

Redmi Note 9S向けにAndroid 12ベースのMIUI 13がリリース 3
初期化直後。毎度のことだが不要なアプリがたくさん。システムアプリですらXiaomiのスマホには要らないのが多い。

Redmi Note 9S向けにAndroid 12ベースのMIUI 13がリリース 4
初期化後、所用で5時間ほど触れず。
で、触れない間にMIUI標準搭載のクリーナーアプリから通知が出ていた。長く使っていないアプリを削除して空き容量を増やせとのこと。
通知をタップすると「クリーナー」アプリが開く。「アプリをアンインストール」をクリック。

Redmi Note 9S向けにAndroid 12ベースのMIUI 13がリリース 5
何故かシステムアプリが3つ削除対象になっている。リスト右側の○をクリックしてチェックし、画面下部の「○○をアンインストール」で削除できた。
というか、初期化から4時間で「長期間使用していないアプリ」をリストアップするのも、システムアプリが削除対象に出るのも、システムアプリが削除できてしまうのもダメでしょ?クリーナーアプリの除外アプリリストが適切に作成されていないのかしら?
とはいえ、今回リストアップされた3つのアプリの内、「壁紙カルーセル」は残しておくと頻繁に表示されて壁紙を変えろとうるさいので削除する予定だったアプリ。他の2つもどうでも良いのでやはり素直に削除した。

XIaomiのグローバルモデルは広告が表示されたり無駄に情報を収集する所謂bloatwareがたくさん。初期化したら毎度の不要なシステムアプリ消しを実行する。MIUIのメジャーバージョンが変わると入っているシステムアプリが微妙に変わるので消して良いのかそうでないのか悩むところが幾つか。

システムアプリの一覧
$ adb shell pm list package
package:com.miui.screenrecorder
package:com.google.android.networkstack.tethering
package:com.xiaomi.cameratest
package:com.google.android.apps.subscriptions.red
package:com.android.cts.priv.ctsshim
package:com.google.android.youtube
package:com.qualcomm.qti.qcolor
package:com.android.internal.display.cutout.emulation.corner
package:com.google.android.ext.services
package:com.android.internal.display.cutout.emulation.double
package:com.android.providers.telephony
package:com.android.dynsystem
package:com.miui.powerkeeper
package:com.goodix.fingerprint
package:com.google.android.googlequicksearchbox
package:com.miui.fm
package:com.google.android.cellbroadcastservice
package:com.android.providers.calendar
package:com.google.android.apps.googleassistant
package:com.android.providers.media
package:com.milink.service
package:com.qti.service.colorservice
package:com.google.android.onetimeinitializer
package:com.google.android.ext.shared
package:com.android.internal.systemui.navbar.gestural_wide_back
package:com.xiaomi.powerchecker
package:com.xiaomi.account
package:com.miui.phone.carriers.overlay.vodafone
package:com.android.wallpapercropper
package:com.xiaomi.cameratools
package:miui.systemui.plugin
package:com.xiaomi.mi_connect_service
package:com.xiaomi.micloud.sdk
package:com.android.updater
package:com.android.externalstorage
package:com.qualcomm.uimremoteclient
package:com.android.htmlviewer
package:com.miui.extraphoto
package:com.miui.securityadd
package:com.qualcomm.qti.uceShimService
package:com.android.companiondevicemanager
package:com.miui.gallery
package:com.android.mms.service
package:com.mi.healthglobal
package:com.miui.msa.global
package:com.qualcomm.qti.qms.service.connectionsecurity
package:com.android.providers.downloads
package:com.longcheertel.midtest
package:com.xiaomi.payment
package:com.google.android.apps.messaging
package:com.miui.securitycenter
package:com.android.internal.systemui.onehanded.gestural
package:vendor.qti.hardware.cacert.server
package:android.autoinstalls.config.Xiaomi.qssi
package:com.qualcomm.qti.telephonyservice
package:com.qualcomm.qti.performancemode
package:com.miui.videoplayer
package:com.qualcomm.qti.ridemodeaudio
package:vendor.qti.iwlan
package:com.google.android.configupdater
package:com.google.android.providers.media.module
package:com.google.android.overlay.modules.permissioncontroller
package:com.android.soundrecorder
package:com.qualcomm.uimremoteserver
package:com.qti.confuridialer
package:com.miui.guardprovider
package:com.android.providers.downloads.ui
package:com.android.vending
package:com.android.pacprocessor
package:com.android.simappdialog
package:com.miui.backup
package:com.android.settings.overlay.miui
package:com.miui.notification
package:android.overlay.common
package:com.miui.micloudsync
package:com.xiaomi.barrage
package:com.android.internal.display.cutout.emulation.hole
package:com.android.internal.display.cutout.emulation.tall
package:com.miui.daemon
package:com.android.networkstack.overlay
package:com.android.certinstaller
package:com.android.carrierconfig
package:com.google.android.marvin.talkback
package:com.android.internal.systemui.navbar.threebutton
package:com.qti.qualcomm.datastatusnotification
package:android
package:com.android.hotwordenrollment.xgoogle
package:com.android.systemui.notch.overlay
package:com.qualcomm.qti.callfeaturessetting
package:com.qualcomm.wfd.service
package:com.miui.hybrid
package:android.miui.overlay
package:com.miui.securitycore
package:com.qti.qualcomm.deviceinfo
package:com.android.egg
package:com.android.mtp
package:com.android.nfc
package:com.android.ons
package:com.android.stk
package:com.android.backupconfirm
package:com.xiaomi.simactivate.service
package:com.goodix.gftest
package:com.longcheertel.sarauth
package:com.miui.phrase
package:com.miui.player
package:com.miui.miservice
package:com.android.provision
package:org.codeaurora.ims
package:com.google.android.gm
package:android.overlay.target
package:com.miui.system
package:com.google.android.overlay.gmsconfig.common
package:com.qti.pasrservice
package:com.miui.cleaner
package:com.android.settings.intelligence
package:com.miui.global.packageinstaller
package:com.miui.miwallpaper.overlay.customize
package:com.android.internal.systemui.navbar.gestural_extra_wide_back
package:com.google.android.permissioncontroller
package:com.miui.systemui.devices.overlay
package:com.miui.compass
package:com.qualcomm.qti.dynamicddsservice
package:com.google.android.setupwizard
package:com.miui.rom
package:com.miuix.editor
package:com.qualcomm.qti.xrvd.service
package:com.qualcomm.qcrilmsgtunnel
package:com.android.providers.settings
package:com.android.sharedstoragebackup
package:com.facebook.services
package:com.android.printspooler
package:com.android.hotwordenrollment.okgoogle
package:com.miui.misound
package:com.qualcomm.qti.services.systemhelper
package:com.android.wifi.resources.overlay.common
package:org.ifaa.aidl.manager
package:com.android.dreams.basic
package:com.google.android.overlay.modules.ext.services
package:com.android.incallui
package:com.android.systemui.gesture.line.overlay
package:com.fido.xiaomi.uafclient
package:com.miui.bugreport
package:com.android.se
package:com.android.inputdevices
package:com.google.android.apps.wellbeing
package:com.fido.asm
package:com.google.android.dialer
package:com.android.bips
package:com.qti.dpmserviceapp
package:com.google.android.captiveportallogin
package:com.google.android.overlay.gmsconfig.comms
package:com.fingerprints.extension.service
package:com.google.android.overlay.gmsconfig.geotz
package:com.qti.xdivert
package:com.android.musicfx
package:com.xiaomi.mircs
package:com.android.systemui.overlay.miui
package:com.android.settings.overlay.common
package:com.google.android.apps.maps
package:com.google.android.modulemetadata
package:com.miui.cloudbackup
package:com.miui.wallpaper.overlay
package:com.miui.face.overlay.miui
package:com.android.cellbroadcastreceiver
package:com.google.android.webview
package:com.google.android.overlay.modules.documentsui
package:com.google.android.networkstack
package:com.google.android.contacts
package:com.android.server.telecom
package:com.android.server.telecom.overlay.miui
package:com.google.android.syncadapters.contacts
package:com.android.keychain
package:com.qti.snapdragon.qdcm_ff
package:com.android.wifi.resources.overlay.target
package:com.android.camera
package:com.android.chrome
package:com.xiaomi.xmsf
package:com.google.android.packageinstaller
package:com.miui.mishare.connectivity
package:com.google.android.gms
package:com.google.android.gsf
package:com.google.android.ims
package:com.google.android.tts
package:com.android.wifi.resources
package:com.android.phone.overlay.common
package:com.android.carrierconfig.overlay.common
package:com.google.android.apps.walletnfcrel
package:com.android.calllogbackup
package:com.miui.freeform
package:com.google.android.partnersetup
package:android.aosp.overlay
package:com.android.systemui.overlay.common
package:com.android.cameraextensions
package:com.xiaomi.xmsfkeeper
package:com.android.server.telecom.overlay.common
package:com.android.localtransport
package:com.google.android.overlay.gmsconfig.gsa
package:com.miui.miwallpaper.overlay
package:com.android.carrierdefaultapp
package:com.xiaomi.mipicks
package:com.miui.wallpaper.overlay.customize
package:com.qualcomm.qti.remoteSimlockAuth
package:com.xiaomi.finddevice
package:com.qualcomm.qti.devicestatisticsservice
package:com.android.theme.font.notoserifsource
package:com.android.proxyhandler
package:com.xiaomi.joyose
package:com.android.internal.display.cutout.emulation.waterfall
package:com.qualcomm.qti.workloadclassifier
package:com.mi.android.globalFileexplorer
package:com.miui.notes
package:com.miui.wmsvc
package:com.google.android.connectivity.resources
package:com.google.android.overlay.modules.permissioncontroller.forframework
package:com.xiaomi.misettings
package:com.google.android.feedback
package:com.google.android.printservice.recommendation
package:com.xiaomi.midrop
package:com.google.android.calendar
package:com.miui.cloudservice
package:com.android.managedprovisioning
package:com.miui.hybrid.accessory
package:com.fingerprints.sensortesttool
package:com.miui.core.internal.editor.services
package:com.android.soundpicker
package:com.tencent.soter.soterserver
package:com.google.android.documentsui
package:com.android.dreams.phototable
package:com.miui.audiomonitor
package:com.miui.touchassistant
package:com.google.mainline.telemetry
package:com.android.providers.partnerbookmarks
package:com.android.smspush
package:com.miui.calculator
package:com.android.wallpaper.livepicker
package:com.android.apps.tag
package:com.miui.miwallpaper
package:com.android.imsserviceentitlement
package:com.facebook.system
package:com.android.systemui.navigation.bar.overlay
package:com.xiaomi.bluetooth
package:com.longcheertel.AutoTest
package:com.google.android.cellbroadcastservice.overlay.miui
package:com.google.android.networkstack.permissionconfig
package:com.android.storagemanager
package:com.wdstechnology.android.kryten
package:com.miui.analytics
package:com.android.bookmarkprovider
package:com.android.settings
package:com.qualcomm.qti.cne
package:com.qualcomm.qti.ims
package:com.qualcomm.qti.lpa
package:com.qualcomm.qti.uim
package:com.miui.weather2
package:org.mipay.android.manager
package:com.google.android.projection.gearhead
package:com.qualcomm.location
package:com.xiaomi.scanner
package:com.google.android.apps.turbo
package:com.android.thememanager.gliobal_config.config.overlay
package:com.android.cts.ctsshim
package:com.google.android.overlay.modules.modulemetadata.forframework
package:com.miui.yellowpage
package:com.qualcomm.qti.uimGbaApp
package:com.caf.fmradio
package:com.qti.diagservices
package:com.miui.systemui.carriers.overlay
package:com.miui.systemui.overlay.devices.android
package:com.qualcomm.qti.services.secureui
package:com.android.vpndialogs
package:com.longcheertel.cit
package:com.android.phone
package:com.android.overlay.gmstelephony
package:com.android.shell
package:com.android.wallpaperbackup
package:com.android.providers.blockednumber
package:com.miui.screenshot
package:com.android.overlay.gmstelecomm
package:com.android.providers.userdictionary
package:com.android.emergency
package:com.qualcomm.qti.seccamservice
package:com.android.hotspot2.osulogin
package:com.qualcomm.qti.qdma
package:com.qualcomm.qti.xrcb
package:com.google.android.gms.location.history
package:com.android.internal.systemui.navbar.gestural
package:com.android.location.fused
package:com.android.deskclock
package:com.android.systemui
package:com.miui.phone.carriers.overlay.h3g
package:com.miui.core.internal.services
package:com.android.wifi.resources.xiaomi
package:com.android.bluetoothmidiservice
package:com.qualcomm.qti.confdialer
package:com.qualcomm.qti.poweroffalarm
package:com.qti.ltebc
package:com.google.android.cellbroadcastreceiver.overlay.miui
package:com.qti.phone
package:com.mi.globallayout
package:com.facebook.appmanager
package:com.xiaomi.discover
package:com.android.thememanager
package:com.android.traceur
package:com.miui.fmservice
package:com.google.android.cellbroadcastreceiver
package:com.qualcomm.qti.qccauthmgr
package:com.lbe.security.miui
package:com.android.bluetooth
package:com.qualcomm.timeservice
package:com.mi.globalminusscreen
package:com.qualcomm.atfwd
package:com.qualcomm.embms
package:com.android.providers.contacts
package:vendor.qti.imsrcs
package:com.android.internal.systemui.navbar.gestural_narrow_back
package:com.android.cellbroadcastreceiver.overlay.common
package:com.miui.core
package:com.miui.face
package:com.miui.home
package:com.google.android.inputmethod.latin
package:com.google.android.apps.restore

黄字は「がとらぼ」の中の人が要らないと判断したシステムアプリ。

上のリストにはありませんが、
com.google.android.apps.subscriptions.redは、Google Oneアプリです。
com.zhiliaoapp.musicallyは、TikTokアプリです。
sg.bigo.liveはビゴライブです。

以下、システムアプリの削除
$ adb shell pm uninstall -k --user 0 com.facebook.appmanager
Success
$ adb shell pm uninstall -k --user 0 com.miui.yellowpage
Success
$ adb shell pm uninstall -k --user 0 com.facebook.system
Success
$ adb shell pm uninstall -k --user 0 com.tencent.soter.soterserver
Success
$ adb shell pm uninstall -k --user 0 com.miui.hybrid.accessory
Success
$ adb shell pm uninstall -k --user 0 com.miui.cloudservice
Success
$ adb shell pm uninstall -k --user 0 com.xiaomi.joyose
Success
$ adb shell pm uninstall -k --user 0 com.miui.mishare.connectivity
Success
$ adb shell pm uninstall -k --user 0 com.miui.cloudbackup
Success
$ adb shell pm uninstall -k --user 0 com.miui.cleaner
Success
$ adb shell pm uninstall -k --user 0 com.facebook.services
Success
$ adb shell pm uninstall -k --user 0 com.miui.hybrid
Success
$ adb shell pm uninstall -k --user 0 com.miui.micloudsync
Success
$ adb shell pm uninstall -k --user 0 com.miui.backup
Success
$ adb shell pm uninstall -k --user 0 com.miui.videoplayer
Success
$ adb shell pm uninstall -k --user 0 com.xiaomi.payment
Success
$ adb shell pm uninstall -k --user 0 com.xiaomi.micloud.sdk
Success
$ adb shell pm uninstall -k --user 0 com.milink.service
Success
$ adb shell pm uninstall -k --user 0 com.miui.fm
Success
$ adb shell pm uninstall -k --user 0 com.google.android.youtube
Success
$ adb shell pm uninstall -k --user 0 com.mi.android.globalFileexplorer
Success
$ adb shell pm uninstall -k --user 0 com.miui.notes
Success
$ adb shell pm uninstall -k --user 0 com.miui.fmservice
Success
$ adb shell pm uninstall -k --user 0 com.xiaomi.simactivate.service
Success
$ adb shell pm uninstall -k --user 0 com.xiaomi.mi_connect_service
Success
$ adb shell pm uninstall -k --user 0 com.xiaomi.mircs
Success
$ adb shell pm uninstall -k --user 0 com.miui.analytics
Success
$ adb shell pm uninstall -k --user 0 com.miui.bugreport
Success
$ adb shell pm uninstall -k --user 0 com.xiaomi.midrop
Success
$ adb shell pm uninstall -k --user 0 com.google.android.apps.wellbeing
Success
$ adb shell pm uninstall -k --user 0 com.xiaomi.mipicks
Success
$ adb shell pm uninstall -k --user 0 com.google.android.apps.subscriptions.red
Success
$ adb shell pm uninstall -k --user 0 com.android.thememanager
Success
$ adb shell pm uninstall -k --user 0 com.android.thememanager.gliobal_config.config.overlay
Success
$ adb shell pm uninstall -k --user 0 com.caf.fmradio
Success
$ adb shell pm uninstall -k --user 0 com.miui.msa.global
Success

削除するのは怖いということであれば「無効化」のdisableをuninstallの代わりに入力。
削除(or無効化)コマンド送信後にSuccessが表示されることを確認する。

まぁ、削除といっても復活させられるので怖がる必要はないんだけど。
たとえば、上で削除したテーマ選択関係の com.android.thememanager と com.android.thememanager.gliobal_config.config.overlay は、通常運用では削除状態で害は無いが、例えば時計でアラーム音を変更したいとなったときに曲の選択画面が出ないというような問題がある。

$ adb shell cmd package install-existing com.android.thememanager
Package com.android.thememanager installed for user: 0
$ adb shell cmd package install-existing com.android.thememanager.gliobal_config.config.overlay
Package com.android.thememanager.gliobal_config.config.overlay installed for user: 0

このように adb shell cmd package install-existing 削除済みシステムアプリ名 で復活できる。通常は復活後すぐに使えるようになるのでシステム再起動は不要。

Redmi Note 9S向けにAndroid 12ベースのMIUI 13がリリース 6
「がとらぼ」の中の人が要らないと思ったシステムアプリを削除した。ドロワーは1画面に全て収まる程度になった。頑張ればさらに半分くらいにもできるだろうが、そこまでする必要もないかなと。個人的には「セキュリティ」とかは要らないのだが、これは消すとトラブる系のアプリなので注意。

MIUI 12.5から何が変わったかと見回しても何か何も違わないようでいて細かい部分は特に画面の切り替わりはちょこちょこ変わってるっぽい。グローバル向け12.5.6.0.RJWMIXMは(問題ありで取り下げられたバージョン)アプリの切り替えがガタガタでWi-FiのAP間の切り替えが異常に悪かった(修正前に戻った?)のでこのあたりが改善されて非常にスムース感が高くなった。
TelegramのRN9SのグループでV13.0.2.0.SJWMIXMのリリースから24時間以内に報告されたバグらしいものはWi-Fiの5GHzの感度が低いというものがあるようです。「がとらぼ」の中の人はこの問題は実感していません。
ちょこっと使った範囲ではRedmi Note 9Sでは新しいMIUI 13は悪いバージョンではなさそう。

MIUI 13で変わったところで気をつけたいところ2点。

Wi-FiのAPの設定で「プライバシー」が「ランダムなMACを使用」が初期値になったので、MACアドレスフィルタリングをかけているAPに接続するのであれば「デバイスのMAC」に変更しなければ「全然つながんねーよ」ということになる。MACアドレスフィルタリングはセキュリティ面ではほぼ意味無い(ガチ勢相手には無駄)が「子供のタダ乗り避け」くらいには役に立つこともあるのかなという点では利用したらダメということはない。ただ、Wi-Fi AP側のMACアドレス管理の手間を考えると「子供のタダ乗り避け」と見合うかは疑問ですが。

更新して初期化後、セットアップウィザードに従いAndroid の初期設定を行う。このとき、求められる項目全ての設定を行わないと、Google Playのアプリ更新が一時保留になる。これはAndroid 11 + MIUI 12系も同じだった筈。
今回、Android 12 + MIUI 13になって、セットアップで必要な項目がよくわからない。通知にセットアップが済んでない旨が表示されなければ終わりかと思うがそうではない?または、Google Playの一時保留判断がおかしいのか一時保留が自動で解除されず悩まされた。結局、一時保留になっているのを手動で更新キャンセルにして再度「更新」させたところ普通に更新できるようになった。わかりにくすぎると思う。

関連記事:

XML Sitemap & Google Newsというプラグイン (WordPress)

XML Sitemap & Google Newsプラグイン 1

WordPress用のXMLサイトマップ出力用プラグインについてググると、定番のGoogle XML Sitemaps (XML Sitemaps)と共にXML Sitemap & Google Newsがヒットする。「がとらぼ」でも幾つか関連記事を書いている。が、Google XML Sitemapsプラグインは数年放置された後に2022年春にWordPress公式のプラグインリストから消え、すぐに復活したもののメンテナがシレッと替わっていて変な機能が追加した新バージョンをリリースして訝しく思った。そこで5月末のことだが「がとらぼ」ではXMLサイトマップ出力プラグインを乗り換えた。その後Google XML Sitemapsの変な機能に見えた部分は直ぐに修正され2022年7月現在は怪しさはほぼ無い感じ。メンテナは元々ころころ変わるプラグインだったし。結局、1ヶ月経たずにGoogle XML Sitemaps (XML Sitemaps)に戻すことになったのだが・・・

XMLサイトマップ出力用のプラグインを乗り換える前にXMLサイトマップを出力するときに何が求められるか整理してみた。

  • 記事が更新された際にそれを知らせたいという意味で更新日時のlastmodタグが出力されること。
  • 子サイトマップを出力できること。(単独サイトマップに全件URL掲載はイヤ)
  • 任意の記事やカテゴリをサイトマップから除外できること。
  • 静的/動的出力は問わず。

条件が多いわけではなく比較的皆が求めそうな条件だがWordPressのプラグインでXMLサイトマップ出力専用という条件で絞った上の条件に当てはまるのを探すと意外と少ないみたい。

WordPressのプラグイン検索のレビュー、日本語のWordPress関連のブログ、Twitterでサイトマップ関連のツイートを見たところ、XML Sitemap & Google Newsが比較的条件に合ってた。導入数もGoogle XML Sitemapsほどではないにしても多めで評判も良く?推す人が多いみたい。
そこで「がとらぼ」でもGoogle XML Sitemapsプラグインから乗り換えてみた。(2022年5月末〜6月の1ヶ月弱ほど)

XML Sitemap & Google Newsプラグイン 2
XML Sitemap & Google Newsプラグインの設定はWordPressのアドミンパネルの左列から「設定」「XMLサイトマップ」にある。設定可能な項目は多くないが「投稿」の子マップを年別/月別にする程度は自身のサイトに適切なものに変更する。「優先度」はGoogleさんは参考にしないようなのでどうでも良い。サイトによっては固定ページはサイトマップに含めないという選択もあるかも。

XML Sitemap & Google Newsプラグイン 3
インデックスサイトマップ(親サイトマップ)をブラウザで表示してみる。URLは https://example.com/sitemap.xml のようなの。example.comは自身のウェブサイトのトップURLに読み替えてください。インデックスサイトマップなので、そこに並ぶのは子サイトマップのURL。例えば投稿記事を月別で子サイトマップに出力する設定であればこの画像のように月別で /sitemap-posttype-post.年4桁月2桁.xml というURLが並ぶ。2022年3月であれば、/sitemap-posttype-post.202203.xml になる。今回はこの2022年3月の子サイトマップのリンクをクリックしてみる。

XML Sitemap & Google Newsプラグイン 4
2022年3月に公開した「投稿」記事のページURLが並ぶ。XML Sitemap & Google Newsは標準で記事の更新日時(Last Modified)が付くのが嬉しい。
で、WordPressのテーマを弄っていない場合、WordPressの動作試験用と自作テーマのサンプル用に用意しているテストサイトで2022年3月に公開した記事の全件数は画像のように14個。

WordPressでウェブサイトを公開していて、記事が著しく増えたとき、特殊なカテゴリの記事を扱うことになったとき、年別や月別のアーカイブ一覧表示から特定のカテゴリーの記事は取り除きたいということは結構ある筈。WordPressでは通常とは違う抽出条件のフィルターを作成してテーマに仕込むことで簡単に実現できる。

WordPress-Path/wp-content/themes/使用中のテーマ/functions.php
function bny_custom_pre_get_posts( $query ) {
    if ( is_admin() || ! $query->is_main_query() ){
        return;
    }
     //↓アーカイブで特定のカテゴリー常にを除く場合は $query->is_archive() 月別/年別/日別/時間別アーカイブは$query->is_date()
    if ( $query->is_date() ) {
        $query->set('cat', '-5'); //←はカテゴリID 5を除外 複数はカンマで区切る 除外時はマイナスID、含める場合はマイナス無し
        //$query->set('posts_per_page', 16);
    }
}
add_action('pre_get_posts', 'bny_custom_pre_get_posts');

この例では年別/月別/日別/時間別のアーカイブリストからカテゴリID 5に含まれる投稿記事を除外する。
カテゴリ名やカテゴリのスラッグでは指定できないので注意。管理パネルの「投稿」→「カテゴリ」で、カテゴリの名前のリンクを取得するとそのリンクに含まれる「ID=(数字)」というのがそれ。
例: https://example.com/wp-admin/term.php?taxonomy=category&tag_ID=5&post_type=post・・・ ←この例だとID=5 なのでカテゴリIDは5ということ。

XML Sitemap & Google Newsプラグイン 5
テーマで年別/月別/日別/時間別アーカイブ一覧から特定のカテゴリの表示を除外したら、何故か「投稿」の月別子サイトマップからもそのカテゴリの記事のURLが消えてしまった。こんな挙動はGoogle XML SitemapsプラグインはもちろんWordPress標準のXMLサイトマップ出力機能でも発生しないのでXML Sitemap & Google Newsプラグインの考慮漏れと思われる。テーマをこれまでもこれからも一切イジらないと誓っているサイトオーナーさんであれば問題無いともいえるが、ウェブサイトを発展させたいと思ったらテーマにもいつか何処かに何らかの手を入れることもあるかと思うので、このような思わぬところで予想外の挙動をするというのは本当に困る。

XML Sitemap & Google Newsプラグイン 6
上の続きだが、月別の子サイトマップを出力するようにしていたとして、ある月のサイトマップに含まれる記事が全て除外対象のカテゴリであったとしたら、常識的にはその月の子サイトマップは空であるとかその月の子サイトマップ自体が「無い」ということになるだろう。
しかし、XML Sitemap & Google Newsプラグインの場合は、子サイトマップが空ではなくウェブサイトのトップページのURLが1つ含まれた状態になる。これは意味がわからなすぎる。

例えばGoogleのSearch Console (通称サチコ)にXMLサイトマップのURLを登録すると、インテックスサイトマップ(親サイトマップ)と子サイトマップを毎日かときどきかはサイトによるかもしれないが、とにかくしょっちゅうサイトマップを読みに来る。サイトマップ出力プラグインを変更するとインデックスサイトマップと子サイトマップのURLが変わることになる。(インデックスサイトマップはsitemap.xmlであることが多いのでこの場合は変わらないかも)
サイトマップのURLが変わった場合は、新しいサイトマップのURLが登録されてそのサイトマップを読みに来るが、旧サイトマップも暫くは読みに来る。暫くというのがいつまでかは不明だが「がとらぼ」ではサイトマップのURLが変わって1ヶ月後に旧サイトマップを読もうとロボットが来ていた。
WordPress標準のXMLサイトマップ出力機能を使うのをやめてXML Sitemap & Google Newsプラグインを導入する場合と、他のXMLサイトマップ出力プラグインからXML Sitemap & Google Newsプラグインに乗り換える場合を考えた。

XML Sitemap & Google Newsプラグイン 7
先ずは、WordPress標準のXMLサイトマップ出力機能からXML Sitemap & Google Newsプラグインに乗り換えた場合。
WordPress標準のXMLサイトマップ出力機能の投稿記事系の子サイトマップはwp-sitemap-posts-post-数字.xml。このURLはXML Sitemap & Google Newsプラグインでは使われない。アクセスされた場合はエラー404 (クリエストされたページが無い)になるので正常。

XML Sitemap & Google Newsプラグイン 8
Google XML SitemapsプラグインからXML Sitemap & Google Newsプラグインに乗り換えた場合。
Google XML Sitemapsプラグインの投稿系月別の子サイトマップのURLはsitemap-pt-post-年4桁-月2桁.xml。このURLはXML Sitemap & Google Newsプラグインでは使われない。なら、WordPress標準のXMLサイトマップの子サイトマップと同じくエラー404になるかと思いきやエラー500になる。これはサーバー内部エラーなのでちょっと問題。(次へ)

XML Sitemap & Google Newsプラグイン 9
不思議なことにGoogle XML SitemapsプラグインからXML Sitemap & Google Newsプラグインに乗り換えたサイトオーナーの多くが何故かこのサーバー内部エラーはGoogle XML Sitemapsプラグインの残骸か何かが悪さをしていると考えるみたい。(残骸なんて無いんだけど)
実は、XML Sitemap & Google Newsプラグインのバグで、/sitemap-○○.xmlというURLでアクセスされた場合、それがXML Sitemap & Google Newsプラグインが使っているURLでない場合は全てサーバー内部エラーになる。
画像では/sitemap-test.xmlをブラウザで表示しようとしたもの。XML Sitemap & Google Newsプラグインが出力するサイトマップのURLではないのでサーバー内部エラーになっている。

XML Sitemap & Google Newsプラグイン 9A
XML Sitemap & Google Newsプラグイン変更前のサイトマップをGoogleボットさんが読みに来ると内部サーバーエラーになるのだが、するとサチコに警告やエラーが表示される。サチコの警告やエラーって初心者ほど無視しているが、ベテランになるほど気にするようなので警告が来ると心がザワザワするのよね。実害はないけど。
ちなみに、このエラー2つはGoogle XML SitemapsプラグインのサイトマップのURLがXML Sitemap & Google Newsプラグインのバグでサーバー内部エラーになったものだが、Google XML Sitemapsプラグインに戻した後もかなりの長期間消えずに残るエラーになる。というのも、Google XML SitemapsプラグインのサイトマップはHTTPヘッダにnoindexを付けている(サイトマップとしては好ましい動作)のでGoogleさんが再評価に訪れてもnoindexを見て諦めてしまう。評価されないとエラーが解消したと判断して貰えないのでエラー状態が継続する。サイトマップは検索インデックスに登録するものではないのでエラーであり続けても問題はないけど気分は甚だ悪い。

XML Sitemap & Google Newsプラグイン 10
次は再現が難しくてどうすれが必ずこうなるというのが言えなくてもどかしいのだが、パーマリンクの変更とURLリライト周りで挙動がヘンになることがある。このときに発生する異常は実害があるといっても良いかもしれない。
この画像は正常時のインデックスサイトマップ(親サイトマップ)。
含まれる子サイトマップのURLは/sitemap-○○.xmlという形式。

XML Sitemap & Google Newsプラグイン 11
パーマリンクを変更した際などに必ず発生するわけではないけどときどき異常になることがあるっぽい。異常が発生した場合は再度パーマリンクの設定をし直すなどで正常になるようだが、それまで異常は続くっぽい。パーマリンクの変更自体は頻度が低い、或いは変更なんかすることはないかもしれない。ただ、変更した場合にまさかサイトマップの出力が異常になることがあるとは普通は思わないから気付きにくいしやっかい。
異常時は、子サイトマップのURLは /?feed=sitemap-○○○ というものになる。これはXML Sitemap & Google Newsプラグインが出力するサイトマップの実身URLっぽいが、このURLが表示されてしまうのは問題。

XML Sitemap & Google Newsプラグイン 12
さらに、インデックスサイトマップから子サイトマップのリンクを開くと、リンクに含まれる年別/月別を指定するURLパラメータが何故か削られてしまう。つまり年別/月別の指定が外れたことになり、全期間/全件表示になる。この状態でブラウザのURL入力欄に年別/月別のURLパラメータを手入力で追加しても[Enter]でページ表示時点でやはりそのURLパラメータが削られるのでそういう処理になってるらしい。
完全に異常だがURLリライトルールに問題があるとこのような症状になると診断している。このリライトルールはApacheであれば.htaccessのものとかではなく、Wordpressのデータベースのwp_optionsテーブルにあるrewrite_rulesかもしれないし、プラグインが持っているものか或いは両方かも。

最後のバグは必ず発生するとはかぎらないのでトラブル率は低いかもしれない。ウェブサーバがNginxで location / { try_files $uri $uri/ /index.php?$args; } が無い場合に発生しやすいが、この指定が無いとパーマリンクの変更でWordPressの記事表示関係のリンクがほぼ全滅になる筈。パーマリンクの変更は迂闊に行わない方が良いので、このエラーを発生させるために変更するのはオススメしません。

XML Sitemap & Google Newsプラグインは個別の投稿/固定ページの編集画面で「XMLサイトマップに含めない」や「優先度」を指定できます。このような指定の仕方なので容易に想像が付きますが、WordPressのデータベースの wp_postmeta テーブルに情報が書き込まれます。meta_keyカラムが _xmlsf_exclude (XMLサイトマップに含めない), _xmlsf_priority (優先度), _xmlsf_image_featured (アイキャッチ画像), 不明(添付画像)のレコードが書き込まれることになります。試した範囲ではXML Sitemap & Google Newsプラグインの無効化で_xmlsf_exclude以外が削除、XML Sitemap & Google Newsプラグインの削除(管理パネルのプラグインリストから削除をクリックした場合)で_xmlsf_excludeを含む全ての関連レコードが削除されるようです。ゴミデータを残さないので行儀は良いといえます。

ただし、wp_optionsテーブルには数個のゴミを残すので適宜削除しましょう。

ブログやツイッターで、何故それが良いのか褒める理由或いは少なからず存在する筈の問題点を説明無しにとにかく「○○がオススメです」って書かれているの見て、それを真に受けるのは止した方が良いというのがXML Sitemap & Google Newsプラグインを導入してみて思ったことです。

導入は簡単なので、小規模のウェブサイトで未来永劫テーマによるカスタマイズは行わないということであれば問題は表面化しないでしょうから導入してみるのが絶対ダメとは言いません。オススメはしませんが

関連記事:
Up