[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-在wordpress實現客家版本的多國語系網頁標題標籤titile":3},{"id":4,"slug":5,"title":6,"description":7,"content":8,"date":9,"image":10,"imageAlt":6,"author":11,"categories":14,"path":18,"minRead":19},3524,"在wordpress實現客家版本的多國語系網頁標題標籤titile","在WordPress實現客家版本的多國語系網頁標題標籤titile","在WordPress實現客家版本的多國語系網頁標籤titile(建議不要用) 我透過TranslatePres […]","\u003Ch1>在WordPress實現客家版本的多國語系網頁標籤titile(建議不要用)\u003C\u002Fh1>\n\u003Cp>我透過TranslatePress實作了一個雙語言的網站專案，結果設定完SEO才想到，阿勒，那多國語系網頁標題標籤(SEO的meta)怎麼辦？\u003Cbr \u002F>\n查了一下，TranslatePress很貼心的有做，但想當然要升級成專業版XDDD想了一下那就用hook硬幹吧。\u003C\u002Fp>\n\u003Ch2>補充\u003C\u002Fh2>\n\u003Cp>發現這方法不會移除原有的meta，導致會出現重複meta，因此改了另一種做法，新方式請見此篇\u003C\u002Fp>\n\u003Ch2>wp_head()\u003C\u002Fh2>\n\u003Cp>查了一下可以使用wp_head這個hook。\u003C\u002Fp>\n\u003Cpre>\u003Ccode># wp-includes\u002Fgeneral-template.php\nfunction wp_head() {\n    ...\n    do_action( &#039;wp_head&#039; );\n}\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>從這邊可以看出WordPress中渲染網頁title標籤的是透過_wp_render_title_tag。\u003C\u002Fp>\n\u003Cpre>\u003Ccode># wp-includes\\default-filters.php\nadd_action( &#039;wp_head&#039;,             &#039;_wp_render_title_tag&#039;,            1     );\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>再往下追就能看到_wp_render_title_tag回傳了標籤的內容。\u003C\u002Fp>\n\u003Cpre>\u003Ccode># wp-includes\u002Fgeneral-template.php\nfunction _wp_render_title_tag() {\n    ...\n    echo &#039;&lt;title&gt;&#039; . wp_get_document_title() . &#039;&lt;\u002Ftitle&gt;&#039; . &quot;\\n&quot;;\n}\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>實作\u003C\u002Fh2>\n\u003Cp>因此可以使用add_filter()來覆蓋這個字串，顯示我想要的不同語言title。\u003Cbr \u002F>\n設計思維：\u003C\u002Fp>\n\u003Col>\n\u003Cli>取得URL中的slug\u003C\u002Fli>\n\u003Cli>透過slug判斷現在的語言\u003C\u002Fli>\n\u003Cli>取的頁面的原標題，跟我要的內容組合title\u003C\u002Fli>\n\u003Cli>根據語言回傳不同的title\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>因為我這個專案的頁面很單純，都是page，所以省去了一些判斷。範例如下：\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function custom_page_title($title) {\n    global $wp;\n    $url = home_url($wp-&gt;request);\n    $slug = trim(parse_url($url, PHP_URL_PATH), &#039;\u002F&#039;);\n    $posttitle = get_the_title();\n\n    if($slug == &#039;zh_tw&#039;){\n        $title = &#039;&lt;title&gt;&#039; . $posttitle.&#039; - 中文標題&#039; . &#039;&lt;\u002Ftitle&gt;&#039;;\n    }elseif($slug == &#039;en&#039;){\n        $title = &#039;&lt;title&gt;&#039; . $posttitle.&#039; - Englishtitle&#039; . &#039;&lt;\u002Ftitle&gt;&#039;;\n    }else{\n        $title = &#039;&lt;title&gt;&#039; . $posttitle.&#039; - 中文標題&#039; . &#039;&lt;\u002Ftitle&gt;&#039;;\n    }\n    echo $title;\n}\n\nadd_filter(&#039;wp_head&#039;, &#039;custom_page_title&#039;, 1);\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>老實說不是很確定有沒有發揮SEO效果，還得再觀察與研究下這個作法，但以目前來說是可以行的。\u003C\u002Fp>\n","2023-06-01T12:16:00","\u002Fapi\u002Fproxy-image?url=https%3A%2F%2Fpost.billxu.net%2Fwp-content%2Fuploads%2F2022%2F12%2FWordPress-logotype-alternative.png",{"name":12,"link":13},"Chih Fan","http:\u002F\u002Fpost.billxu.net",[15],{"name":16,"slug":17},"WordPress","wordpress","\u002Fblog\u002F在wordpress實現客家版本的多國語系網頁標題標籤titile",1]