自行修正Site Kit AdSense錯誤

我部落格的網址是用子網域,先前裝Site Kit的時候,已經驗證過AdSense。但最近不知道何時開始,卻出現以下的畫面,告訴你要完成設定。但不管怎麼點,卻都會顯示錯誤。

以下是出現錯誤的流程

下圖是點選Site Kit > Setting之後出現的畫面。在已連接的服務中,AdSense的區塊右邊顯示了一顆要你完成設定的按鈕 “Complete setup for AdSense”。

點選之後,就會開始跑進度條

但最後會顯示錯誤:Invalid site state null

即使回到Setting這邊,把AdSense移除,再連接一次也是會失敗

解決方法

我本來以爲錯誤訊息”Invalid site state null”中的這個site state是指我的部落格有什麼問題,但我看控制台 > 工具 > 網站狀態的測試結果,似乎也沒有什麼奇怪的地方。

於是打開瀏覽器Console重新跑一次剛剛的流程。當我按下”Complete setup for AdSense”時,會call一隻API “/wp-json/google-site-kit/v1/modules/adsense/data/sites?accountID=pub-xxxxxxxxxxxxx&_locale=user”,這隻API會去AdSense撈所有我設定的網域。

但我記得今年三月還四月的時候,AdSense「網站」單元改版,從那之後應該就沒有設定子網域的地方了,但API撈回來的卻包含了子網域,且在這份資料中,我其他所有子網域的state與autoAdsEnabled 跟錯誤訊息一樣是顯示null。那就有可能猜中問題了!

於是我打開了外掛檔案編輯器,找到 “google-site-kit/third-party/google/apiclient-services/src/Adsense/ListSitesResponse.php” 在 getSites function 裏面針對剛剛部落格的那個subdomain給了autoAdsEnabled = true(允許自動廣告)與state = “READY”(網站驗證狀態)。

public function getSites()
{
    $this->sites[1]['autoAdsEnabled'] = true; // 自動廣告
    $this->sites[1]['state'] = 'READY'; // 網站驗證狀態
    // 上面兩行的 $this->sites[1] 的1要改成剛剛API中部落格網域的索引
    return $this->sites;
}

再重新去點一次”Complete setup for AdSense”,這次API所回的內容就會是被我們修改過的內容。

接著就會顯示連結成功的畫面了!

連結成功之後,記得回到外掛檔案編輯器把剛剛修改的東西復原。

這個方式只建議給之前就連結AdSense且成功的人這樣做,我想應該只是Site Kit驗證AdSense網域的部分沒有同步到改版後的AdSense網域規則。不過不處理其實好像也都很正常,只是看到有個提示在那邊,真讓人不舒服啊。

2023/06/14 更新

過沒幾天 “Complete setup for AdSense” 又出現了… 這次我改完外掛並且complete setup之後,先不移除,看看之後會怎樣。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料