WordPress標準のXMLサイトマップ出力機能で特定カテゴリに含まれる全ての記事を除外する

黒板を消している学生
©いらすとや.

WordPress 5.5から搭載されたXMLサイトマップ出力機能(コアXMLサイトマップ)は標準状態ではいろいろ機能が足りないのでとてもじゃないけど「そのまま使います」とはいかない代物。「がとらぼ」ではこれまで幾つかこのコアXMLサイトマップを使い物にしようとする記事を上げているが、必要な機能は「既に出回っているコードを組み入れて下さい」みたいなことを書いていた。
ググると、「この記事は(noindexにしているから)サイトマップに入れたくない」を実現するコードは多く出回っているのですぐに見つかる。同様に「このカテゴリはサイトマップに入れたくない」を実現するコードも多く出回っている。
しかし、この「カテゴリを除外するコード」というのは子サイトマップ /wp-sitemap-taxonomies-category-数字.xml から https://ドメイン名/archives/category/指定カテゴリ を除くものであって、それ以外の何物でもない。 つまり、カテゴリに含まれる記事そのものは全く何も影響されない。考えてみれば、カテゴリ「盆栽」を除外したいと考えているサイトオーナーは盆栽カテゴリを示すURLだけを除外したいわけではない筈。盆栽カテゴリに含まれる記事も除外したい筈よね? コアXMLサイトマップではなくXMLサイトマップ出力プラグインでカテゴリ除外機能を搭載しているものはそうなってる筈。(全部確認したわけではないけど)
結構がんばってググってみたが、その「指定カテゴリに含まれる記事の除外」が見つからない。

欲しい機能が見つからないなら欲しいと思った人が作れば良い。
作ってみた。 (誰でも作れる超カンタンなものですが)

指定カテゴリに含まれる全ての記事をサイトマップから除外するコード

1
2
3
4
5
6
functions bny_exclude_posts_and_categoey_from_sitemap($args) {
  $args['post__not_in'] = array( 110, 111, 112, 113, 558 ); //投稿&固定記事のIDをカンマ区切りで指定
  $args['category__not_in'] = array( 1, 5, 6 ); //カテゴリIDをカンマ区切りで指定 カテゴリに含まれる記事の除外なので注意 
  return $args;
}
add_filter('wp_sitemaps_posts_query_args', 'bny_exclude_posts_and_categoey_from_sitemap', 10, 2 );

2行目、「この記事とこの記事は除外したい」を実現する投稿&固定記事をID指定で除外するコードはよく出回っている。これは普通に使いたい機能なので「カテゴリに含まれる全ての記事を除外」とは別に用意しておく。上のコードでは記事ID 110, 111, 112, 113, 558の5つの記事を除外している。
3行目がこの記事の本題の部分、指定したカテゴリIDに含まれる全ての記事を除外するもの。上のコードではカテゴリID 1, 5, 6の3つのカテゴリを除外している。この内、カテゴリID 1はWordPressが自動で作成する「未分類」カテゴリです。つまりカテゴリID 1を除外したなら「未分類」カテゴリの記事の全てがサイトマップから除外されます。

これで、ほぼコアXMLサイトマップではダメだという理由がなくなりました。
「がとらぼ」では長らく(Google) XML Sitemapsプラグインを使ってきましたが、これでコアXMLサイトマップに切り替えました。(他に所有している新しめのウェブサイトは既にコアXMLサイトマップにしています)

関連記事:

AdSense以外の有望ウェブ広告サービスThe Moneytizerを使ってみる

The Moneytizer
©The Moneytizer.

ウェブで広告収入を得たいと思ったとき、まず思い浮かぶのはGoogleのAdSenseあたりかもしれません。2022年11月時点ではもっともメジャーなウェブ広告のサービスです。ウェブの閲覧者によって広告がクリックされたり広告が表示されることによって報酬が発生します。しかし、審査基準がかなり厳しめでなかなか利用できなかったり、不可解な理由で広告表示を停止させられたり場合によってはアカウントをバンされることもあるのでAdSenseだけに広告収入を頼るというのはリスクかもしれません。またコンテンツのテーマによってはまともなクリック単価のある広告がつかなくてインプレッション広告の1円に近い収益にしかならないこともあるかもしれません。また、コンテンツのテーマによってはGoogle検索で上位表示されなくてPVがほぼ無くて収益に結びつかないということもあるでしょう。
「ウェブ広告付けたい」「AdSenseを利用しよう」というのは安直すぎます。
コンテンツの内容次第では「Google検索からの流入を期待しない」「AdSenseを利用しない」という考え方が必要です。
この場合は、対GoogleなSEOからも開放されます。
とはいえ、Google検索やAdSense以外の流入方法や広告を考えなければなりません。

Google検索以外からの流入としては最近であればSNSはとても有力です。SNSに力を入れているのであればGoogle検索を切り捨ててSNSでの客引きだけを頑張るというのはアリでしょう。
広告は主にアフィリエイトを頑張れば収益の柱になりそうですが、それだけでは収益の安定性が低そうです。ここで、この記事のメインであるThe Moneytizer (マネタイザー)の登場です。

The Moneytizerは欧州(フランス)発祥の広告サービスです。現在は欧州/北米/南米をはじめとして世界中で利用できます。利用者(広告を貼る側のウェブサイトオーナー)は2021年時点で6万ということでAdSenseと比べると少ないですがそれでもまぁまぁの規模ではないでしょうか。2022年11月時点ではAdSenseの代替広告サービスとしては有力だと思われます。ただし、クリック広告ではありません。
AdSenseほどは内容についてアレもダメコレもダメとうるさくなく適度な審査が行われているようなので敷居が高くなくて利用しやすいといえるでしょう。とはいえ、どんなコンテンツでもOKというわけではありません。少なくとも広告主が嫌がるようななコンテンツはダメな筈です。この下に規約のリンクと「ウェブサイトの審査基準」の引用を付けます。NGなコンテンツは審査基準の方にざっくり書いてあります。

まず、規約 https://us.themoneytizer.com/t-and-csに目を通しましょう。

ウェブサイトの審査の基準

検証基準 https://jp.themoneytizer.com/faq/validation-criteria
Moneytizer は安全なネットワークです。そのため、当社のプラットフォームでウェブサイトを収益化するには、ウェブサイトが特定の基準に準拠する必要があります。
最初にドメインを所有する必要があります。つまり、プラットフォームにサブドメイン (http://mywebsite.blogspot.com や http:/mywebsite.com/blog などの Web サイトのサブページなど) を登録することはできません。または http://blog.mywebsite.com。

__Wix や Jimdo などのプラットフォームで作成された Web サイトは承認できません。これらのプラットフォームでは、Web サイトのサーバーへのアクセスが許可されていません。これにより、ads.txt ファイルを配置するにはサーバー情報にアクセスする必要があるため、収益化が不可能になります。__

当社のプラットフォームで収益化を希望するウェブサイトには、高品質で最新のコンテンツと十分な資料が必要です。たとえば、記事が 3 つまたは 4 つあるサイトは受け付けられません。
| | 今年の時点で、あなたのウェブサイトには、登録前の 30 日間に最低 30,000 のユニーク ユーザーが必要です。
||| また、ストリーミング サービスを提供または共有する Web サイト、違法なダウンロード、著作権を尊重しない Web サイト、性的なコンテンツを表示する Web サイト、暴力、出会い系 Web サイト、ソーシャル ネットワークおよび/またはギャンブル サイトも受け付けません。ソーシャル メディア チャンネルも受け付けていません。たとえば、Instagram プロフィールや YouTube チャンネルを収益化することはできません。

一番重要そうなのに何故か殆ど読まれていないページということになっています(笑)

独自ドメインであることは必須のようです。ads.txtを設置するにはドメインのトップディレクトリに権限を持つ必要があるのでサブディレクトリのウェブサイトはダメということです。さらにサブドメインもダメというのは少し厳しいといえるかもしれません。

数ページしかないサイトはダメということのようです。

MoneytizerはAdSenseと異なりインプレッション広告なのでとにかくページビュー(PV)が必要です。というか、PVが少なければ収益が発生しにくいです。これはAdSenseも同じです。Moneytizer申請時点で1日に1000ユニークユーザー(UU)は必要とされています。(PV > UUなので怒られるかもしれませんが超甘々で1日1000PVと読み替えて良さそうです)
正直3000PV以下では収益らしいものは殆ど発生しないかもしれません。
つまり、立ち上げたばかりのようなブログでは申請できませんし、仮に1000PV程度あってMoneytizerに申請して通ったとしても「収益が全然ない・・」ということになりかねません。まぁAdSenseでも1日1000PV以下だとロクに収益は発生しないので同じです。

以下、画像中に登場するTakeo Wattaさんとwatta@takeo^general.comというメールアドレス、03-000-0000という電話番号、exmaple.comというドメインは架空のものです。
また、使用しているThe Moneytizerのスクリーンショットはこのブログへの掲載許可をいただいています。

Moneytizerにアカウント登録

AdSense代替広告 The Moneytizer 1
https://jp.themoneytizer.com/ を開く。
Sign Inをクリック。

AdSense代替広告 The Moneytizer 2
アカウントの登録画面。入力は全て英数字(+記号)で行います。日本語はダメです。
メールアドレスはMoneytizerのアカウントになります。
電話番号のフォーマットは特に指示されていませんが、こういう国際的なサービスの場合は国番号付きで入力するのが無難です。日本の国番号は81で、電話番号の最初の0を取ったものを国番号の後に続けます。090-xxxx-xxxxなら81 90-xxxx-xxxxになります。ハイフンを除けば8190xxxxxxxxです。03-xxxx-xxxxなら81 3-xxxx-xxxxなので813xxxxxxxxです。
「スポンサーコード/URL」というのは紹介コード/紹介URLの入力欄です。Moneytizerには紹介プログラムがあって、Moneytizerを紹介した人が発行した紹介コード/紹介URLをこの欄に入力してMoneytizerに登録し1ドル以上の収益が発生した場合に、紹介した人に15ドル、紹介された人に5ドルが支払われます。つまり、合理的に考えれば紹介コードまたは紹介URLを入力すれば後で5ドル貰えて得です(損することは何もありません)が、日本人の場合は多くが「でも、紹介した人にはその3倍の15ドルが入るんでしょ?だったらイヤだな(謎思考)」となるのでおそらくこの紹介プログラムって日本人にはあまり利用されないんじゃないかしら?知人や信頼している人がMoneytizer利用者ならその人からコードを貰うのが良いのかもしれません。
一応、「がとらぼ」の中の人のスポンサーコード 481fbbcb1492f028e92107f22284f23b と、スポンサーURL https://jp.themoneytizer.com/&sponsor=481fbbcb1492f028e92107f22284f23b#inscription を置いておきます。(入力するのはスポンサーコードだけで良い筈です)
嫌儲な方であれば「空」で良いです。
「私はロボットではありません」にチェックをして、「START MONETIZING」ボタンをクリックします。

ここでMoneytizerからメールが届く筈なのでメール内のリンクをクリックで「確認」しておきます。

Moneytizerに自分のサイトを申請する

AdSense代替広告 The Moneytizer 3
「Add your website」の「URL」に自分のウェブサイト(Moneytizerの広告を貼りたいウェブサイト)のトップURLを入力。
「ウェブサイト」のカテゴリーをドロップダウンメニューで選択。
月間ユニークビジター数を選択します。1日に2000PV,1000UU程度なら25K(25000)、1ヶ月にざっくり百万人来てるなら1Mのような選択。
3つ正しく入力/選択できたら「SUBMIT」ボタンをクリック。

ads.txtの準備/変更

最近は広告会社と広告を貼るサイトの紐付けのために多くの広告会社がウェブサイトにads.txtを設置することを求めるようになっています。Moneytizerでもads.txtの設置またはMoneytizer用のレコードの追加を求められていて、Moneytizerではこれは必須とされています。

AdSense代替広告 The Moneytizer 4
Moneytizerではads.txtの設置に「自動設定」と「手動設定」が用意されています。この手は多くが自動にすると後から後悔することになることが多いのと手動だから面倒ということでもないのでここでは「手動設定」を選択します。
これまでウェブサイトに広告を貼ったことがないとかads.txtの設置が不要なアフィリエイトの広告しか貼ったことがないという場合はads.txt は新規設置になります。「DOWNLOAD ADS.TXT FILE」ボタンを押してads.txtファイルをダウンロードします。利用しているレンタルサーバによってファイルの設置手順は異なるでしょうが、FTPを使うとか管理パネルでファイルのアップロードをするなどでウェブサイトのトップディレクトリ(ウェブサイトのドキュメントルート)にads.txtをアップロードします。必要に応じてパーミッションをウェブサーバが読み込めるよう設定します。(レンタルサーバの類なら何もしなくて良いかと)
すでにAdSenseなどのads.txtを設置する必要のある広告サービスを利用しているなら、既存のads.txtの次の行以降にコピペして上書き保存します。AdSenseなどであれば既存のads.txtは中身が1行(1つの広告サービスで最低1行)程度ですが、Moneytizerは広告ネットワーク毎にレコードがあるようで2022年11月8日時点で863行もあります。省いたりせずに全て完全にコピペしましょう。
ads.txtの設置/変更が完了したら「統合の確認」ボタンをクリックします。数秒後、ads.txtの存在と中身が確認されて正しければ「ads.txtは統合され、最新の状態です!」が日本語で表示され、右側の「NEXT」ボタンが押せるようになります。ads.txtが存在しなかったり中身が正しくなければ統合出来ていない旨が(おそらくフランス語で)表示されると思われます。

AdSense代替広告 The Moneytizer 5
ads.txtが正しく設置されると左列メニューの「MY WEBSITES」で承認待ちサイトの行の「ADS.TXT」が(緑丸のチェック)になります。その右の「CMP」はまだのままです。このCMPの×がその右上の「必要な手続き 1」になります。(次へ)

CMPの設置

Moneytizerは、欧州発祥の広告サービスらしく欧州のGDPR準拠の同意バナー(同意を求めるツール CMP = Consent Management Platform)の表示が必須のようです。そのCMPのコードをウェブサイトのHTMLヘッダに組み込む必要があります。

AdSense代替広告 The Moneytizer 6
左列のメニューから「CONSENT BANNER」をクリックする。
右列にあるテキストボックスにCMPのコードがあるのでコピーする。ウェブサイトのHTMLヘッダにこのコードを貼り付けます。HTMLヘッダというのは<html><head>ここがHTMLヘッダ部分</head><body>〜 なので、</head>の直前あたりに貼り付ければOKです。WordPressであれば/wp-content/themes/使用中のテーマ/header.phpにその部分がありそうです。
HTMLヘッダにCMPのコードを貼り付けて保存したら(キャッシュを有効にしているCMSであればキャッシュの削除を行ってから)「統合の確認」をクリックします。

数秒待たされて、「Votre bandeau n'est pas intégré !」が表示されたら何かが失敗。HTMLソースを表示してCMPのコードが含まれているか確認します。
CMPのコードが表示されているにも関わらず「Votre bandeau n'est pas intégré !」が解消されない場合、Cross-Origin Read Blocking (CORB)が疑われます。意識高い系のウェブサイトだとContent-Security-Policy(CSP)を厳し目に設定してるかもしれませんが、少なくともcmp.quantcast.comをscript-srcディレクティブに追加して許可してやらないとNGの筈。これは過去にCSP厳し目で広告を貼った経験があれば容易に想像がつくだろうけど、そうではない多くの人には何故かわからないかもしれない。とはいえ、そういう人たちがそもそもCSP厳し目の設定なんて作るはずがなさそうだけど。そして、CMPのチェックは通ったとしてもマネタイザーの広告コードをサイトに貼って運用する段階ではconnect-src, imf-srcなどでかなり多くのドメインを許可しなくてはならなくてCSP厳しめ設定は破綻する。AdSenseとは異なりMoneytizerでは個別ドメイン許可式のCSPの設定は諦めた方が良さそう。Cross-Origin-Resource-Policy(CORP)もね。

AdSense代替広告 The Moneytizer 7
「統合の確認」が成功した場合は、このような画面になるので「コンセントバナーはうまく統合されています」をクリックする。

AdSense代替広告 The Moneytizer 8
左列のメニューから「MY WEBSITES」をクリックします。
承認待ちサイトの行のCMPがから(緑丸のチェック)になっていることを確認します。つまり、ADS.TXTとCMPの2つが(緑丸のチェック)になっている筈です。

これでサイトの申請で行うべきことは全て完了といえます。
審査結果のメールが届くのを待ちましょう。

審査合格後にウェブサイトに広告を貼る

AdSense代替広告 The Moneytizer 9
ウェブサイトの審査は(2022年11月現在)早ければ数時間で完了しメールが届きます。少なくともAdSenseのように半月待ちというとんでもない遅さではないようです。
上の画像の様なメールが届けばおめでとうございます。
ウェブサイトに広告ユニットを設置して広告をバンバン表示して収益を得ましょう。といっても大量に貼ると閲覧者さんに嫌われますし、Moneytizerでは一部の広告ユニットを除いて同じコードの広告ユニットを1つのページに複数貼ることができないようです。(AdSenseは同一広告コードを複数貼りまくれます)

https://us.themoneytizer.com/faq/can-i-place-the-same-ad-unit-several-times-on-the-same-page
同じ広告ユニットを同じページに複数配置できますか?
ウェブサイトの同じページに同じ広告ユニットを 2 回以上配置しないでください。

なんで?

※同じIDの広告ユニット同士はくっついて表示されます。

* 当社のパートナーは、同じ広告がページに表示される回数を検出します。収益は単純にフォーマット数で割ります。

ただし、「レクタングル」と「メガバナー」広告ユニットは例外です。これらは、「Bottom Medium Rectangle」タグと「Megabanner bottom」タグを使用して 2 回使用できます。

AdSense代替広告 The Moneytizer 10
左メニューから「MY WEBSITES」をクリックします。
申請したドメインの行のドメイン名下の「承認待ち」の表示が消えて代わりにグラフが表示されている筈です。STATUSの表示が(緑丸のチェック)になっていることを確認します。
一番右の「Add Format」のボタンが色付きで押せるようになっているのでそれをクリックします。

AdSense代替広告 The Moneytizer 11
広告ユニットの名前とサイズ、サイトのページ内での配置例の画像が複数表示され、それぞれに「GET A TAG」ボタンがあるので自分のウェブサイトに貼りたい広告ユニットの「GET A TAG」ボタンをクリックします。

AdSense代替広告 The Moneytizer 12
ボタンが広告コード表示に変わるので (コピー)アイコンをクリックしてコードをコピーします。

広告を貼りたいウェブサイト側でコピーしたコードを貼り付けます。

AdSense代替広告 The Moneytizer 13
ここではWordPressのサイドバー用ウィジェットに広告を付けることにします。
WordPressの管理パネルの左メニューから「外観」→「ウィジェット」を選択します。
「カスタムHTML」ウィジェットのバーをドラックしてサイドバーに放り込みます。
ドラッグできない場合は、クリックします。(次へ)
このウィジェット画面は、トラディショナル表示です。最近のWordPressとテーマでは新しい表示方式になっているのが増えているのでこの画面とは若干異なるかもしれません。

AdSense代替広告 The Moneytizer 14
(続き) 「カスタムHTML」ウィジェットのバーをクリックした場合は、ウィジェットの置き先が表示されるので複数ある場合は目的の置き場所を指定して「ウィジェットを追加」をクリックします。

AdSense代替広告 The Moneytizer 15
追加した「カスタムHTML」ウィジェットがサイドバーの枠に登場します。出現した「カスタムHTMl」の「タイトル」と「内容」に入力しますが、「タイトル」はおそらく不要でしょう。「内容」欄にMoneytizerからコピーした広告ユニットのコードを貼り付けます。
右下の「保存」をクリックします。

AdSense代替広告 The Moneytizer 16
広告を貼ったら表示を確認します。初めて広告を貼った場合、暫くは広告らしい広告ではなくMoneytizerの広告ユニットの画像が表示されます。
このウェブサイトとMoneytizerの広告ユニット画像はハメ込み合成です。

https://us.themoneytizer.com/faq/i-integrated-ads-on-my-website-but-they-are-not-displaying-why
Web サイトに広告を組み込みましたが、広告が表示されません。なぜですか?
Moneytizer スクリプトを Web サイトに統合した後、最初の広告が表示されるまでに数時間かかる場合があります。

ただし、数時間経過してもまだ空白の広告スペースが表示される場合は、いくつかの可能性があります。

CMP (同意バナー) を統合していないため、Moneytizer 広告を表示できません。

The Moneytizer が提供する一部の広告ユニットは、100% の広告掲載率の恩恵を受けません。CPM が高いため、広告主はキャンペーンを一部の訪問者にのみ表示することを決定する場合があります。

あなたはウェブサイトの所有者であり、あなたの IP アドレスは広告主にとってそれほど価値がありません。私たちのパートナーは、広告を操作せずにウェブサイトで多くの時間を費やしていることを確認しています. 別の理由として、広告キャンペーンの数が制限されている国から Web サイトにアクセスしている可能性があります。一部の国では、広告主の数が限られているため、Moneytizer が 100% の広告掲載率を保証することはできません。

広告のパフォーマンス (クリック率、可視性など) が非常に低く、広告主を惹きつけていません。多数のパートナーがいるにもかかわらず、広告掲載率が 100% に達することはありません。広告と収益の統合を最適化するには、お気軽に The Moneytizer チームまでお問い合わせください。広告が成功するようにセットアップするお手伝いをいたします。

AdSense代替広告 The Moneytizer 17
WordPressでは広告ユニットヴィジェットや記事本文には手動でカンタンに貼ることができます。テーマのコードを触ることができるならテーマに広告コードを組み込むこともできます。(初心者にはオススメしません)
しかし、もっとカンタンに広告を扱いたいならMoneytizerのプラグインがあります。WordPress初心者の方にはプラグインがカンタンで良いでしょう。ダウンロードのリンクが書かれていますが、こちらからではなく次の方法でインストールする方が良いでしょう。

AdSense代替広告 The Moneytizer 18
広告を貼りたいウェブサイトのWordPressの管理パネルの左メニューから「プラグイン」→「新規追加」をクリックします。
右上のキーワード入力欄に「Moneytizer」と入力します。
絞り込まれた候補から「The Moneytizer」の「今すぐインストール」をクリックします。
インストール後はプラグインを有効化します。あとはいろいろ試して使い方を習得してください。

Moneytizerの広告を表示するのであればウェブサイトのプライバシーポリシーに関連する項目を追加します。マネタイザーのドキュメントでは関連する記載を見つけることができませんでしたが、ウェブサイトのプライバシーポリシーを内容の不足した状態で放置することがよくないので自主的に必要な内容を追加しましょう。追加するポリシーのヒントはMoneytizerの規約にあります。

https://us.themoneytizer.com/faq/is-it-possible-to-use-the-moneytizer-ad-units-on-amp-pages
AMP ページで The Moneytizer 広告ユニットを使用することはできますか?
残念ながら、Moneytizer が AMP ページを収益化することは不可能です。

当社が使用するヘッダー入札技術は、広告スペースをめぐる数十の広告パートナー間の競争を意味します。

現時点でAMP広告には対応していないようです。AMPサイトが減るようであれば今後も対応することはないかもしれません。

収益の受け取り

収益の受け取りの設定は、メニューの「MY PROFILE」から「EDIT」ボタンを押します。
プロフィールを入力していない場合は、ローマ字で入力します。
支払い情報は、毎月1日から10日は変更できません。それ以外の期間に変更しましょう。
「請求先」は、法人でやっているのでなければ基本的に「個人」を選択します。
「銀行口座の詳細」は、受けとり方法と口座を選択、入力します。Wire transferは、電信送金です。銀行の口座に振り込んで貰いたいならこれを選択しますが、銀行名として何を入力すれば良いかやSWIFTコードなどは銀行のウェブで確認してください。はっきりいって慣れてないと難しいかもしれません。そして、なにより送金手数料が高いのでオススメしません。
もう一つの選択肢であるPayPalの方が良いでしょう。本当はPayoneerが使えれば嬉しいのですが。

立ち上げたばかりのブログなどはPVが少ないうちはAdSenseもどうせ収益ないので導入するなんて考えないで、ある程度育ったウェブサイトのコンテンツのテーマがGoogleさんと相性悪くてAdSenseの審査が通らないということであれば無駄な苦労なんてしないですっぱりさっぱり気持ちを切り替えてMoneytizerにするというのが良さそうです。
インプレッション広告のサービスとしてはMoneytizerはちょうど良いと思います。

Up