Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
在解決問題之道上不斷前行
我透過TranslatePress實作了一個雙語言的網站專案,結果設定完SEO才想到,阿勒,那多國語系網頁標題標籤(SEO的meta)怎麼辦?
查了一下,TranslatePress很貼心的有做,但想當然要升級成專業版XDDD想了一下那就用hook硬幹吧。
發現這方法不會移除原有的meta,導致會出現重複meta,因此改了另一種做法,新方式請見此篇
查了一下可以使用wp_head這個hook。
# wp-includes/general-template.php
function wp_head() {
...
do_action( 'wp_head' );
}
從這邊可以看出WordPress中渲染網頁title標籤的是透過_wp_render_title_tag。
# wp-includes\default-filters.php
add_action( 'wp_head', '_wp_render_title_tag', 1 );
再往下追就能看到_wp_render_title_tag回傳了標籤的內容。
# wp-includes/general-template.php
function _wp_render_title_tag() {
...
echo '<title>' . wp_get_document_title() . '</title>' . "\n";
}
因此可以使用add_filter()來覆蓋這個字串,顯示我想要的不同語言title。
設計思維:
因為我這個專案的頁面很單純,都是page,所以省去了一些判斷。範例如下:
function custom_page_title($title) {
global $wp;
$url = home_url($wp->request);
$slug = trim(parse_url($url, PHP_URL_PATH), '/');
$posttitle = get_the_title();
if($slug == 'zh_tw'){
$title = '<title>' . $posttitle.' - 中文標題' . '</title>';
}elseif($slug == 'en'){
$title = '<title>' . $posttitle.' - Englishtitle' . '</title>';
}else{
$title = '<title>' . $posttitle.' - 中文標題' . '</title>';
}
echo $title;
}
add_filter('wp_head', 'custom_page_title', 1);
老實說不是很確定有沒有發揮SEO效果,還得再觀察與研究下這個作法,但以目前來說是可以行的。