2015-08-13 28 views
0

我會試着解釋我的情況。Wordpress add_filter裏面的函數不起作用

我想改變wpseo_title,wpseo_metakey,wpseo_metadesc,wpseo_opengraph_type,wpseo_opengraph_image,wpseo_title,wpseo_opengraph_image_size 「歸檔頁的」 「自定義後」

對由於yoast插件沒有翻譯元「歸檔」文章內的標籤。我需要把所有

我有這樣的代碼:

function get_archive_seo() { 

include 'seo_archive.php'; 

$tipoSel = get_post_type(get_the_ID()); 

if(is_post_type_archive($tipoSel)){ 

    foreach ($traduccionesArchive as $keyTipo => $tipo){ 
     foreach ($tipo as $keyMeta => $palabra){ 
      if($keyMeta == 'opengraph_type' || $keyMeta == 'opengraph_image_size') continue; 
      icl_register_string ('my-theme', $keyTipo." - ".$keyMeta, $palabra); 
     } 
    } 

    foreach ($traduccionesArchive[$tipoSel] as $key => $palabra){ 
     add_filter('wpseo_'.$key, function($nombre) use ($palabra, $tipoSel, $key) { 
      if($key == 'opengraph_type' || $key == 'opengraph_image_size') return $palabra; 
      return icl_t('my-theme', $tipoSel." - ".$key, $palabra); 
     }); 
    } 

} 

} 

add_filter('wp_head', 'get_archive_seo'); 

這是「seo_archive.php」

$traduccionesArchive['hoteles']['title'] = 'Hotel, Vacaciones en Andalucia'; 
$traduccionesArchive['hoteles']['metakey'] = 'palabra1, palabra2, palabra3'; 
$traduccionesArchive['hoteles']['metadesc'] = 'Mapa de Hotel en Andalucia, Costa del Sol, Costa de la Luz y Sierra de Grazalema. El lugar ideal para tus vacaciones.'; 
$traduccionesArchive['hoteles']['opengraph_type'] = 'object'; 
$traduccionesArchive['hoteles']['opengraph_image'] = 'http://www.hotel.com/img/logo.png'; 
$traduccionesArchive['hoteles']['opengraph_image_size'] = 100; 

$traduccionesArchive['apartamentos']['title'] = 'Apartamentos de vacaciones Costa del Sol '; 
$traduccionesArchive['apartamentos']['metakey'] = 'palabra1, palabra2, palabra3'; 
$traduccionesArchive['apartamentos']['metadesc'] = 'Mapa de localizacion de los Apartamentos Vacacionales de Hotel. Disfruta de tus vacaciones en familia en la Costa del Sol.'; 
$traduccionesArchive['apartamentos']['opengraph_type'] = 'object'; 
$traduccionesArchive['apartamentos']['opengraph_image'] = 'http://www.hotel.com/img/logo.png'; 
$traduccionesArchive['apartamentos']['opengraph_image_size'] = 100; 

$traduccionesArchive['destinos']['title'] = 'Mapa de localizacion de Hotel, Andalucia'; 
$traduccionesArchive['destinos']['metakey'] = 'palabra1, palabra2, palabra3'; 
$traduccionesArchive['destinos']['metadesc'] = 'Mapa de Hoteles en Andalucia, en los destinos vacacionales de Costa del Sol, Costa de la Luz y Sierra de Grazalema Andalucia.'; 
$traduccionesArchive['destinos']['opengraph_type'] = 'object'; 
$traduccionesArchive['destinos']['opengraph_image'] = 'http://www.hotel.com/img/logo.png'; 
$traduccionesArchive['destinos']['opengraph_image_size'] = 100; 

$traduccionesArchive['ofertas']['title'] = 'Ofertas Hotel Costa del Sol, Costa de la Luz '; 
$traduccionesArchive['ofertas']['metakey'] = 'palabra1, palabra2, palabra3'; 
$traduccionesArchive['ofertas']['metadesc'] = 'Ahorra en tus vacaciones con las ofertas en nuestros hoteles de la Costa del Sol, Costa de la Luz y Andalucia.'; 
$traduccionesArchive['ofertas']['opengraph_type'] = 'object'; 
$traduccionesArchive['ofertas']['opengraph_image'] = 'http://www.hotel.com/img/logo.png'; 
$traduccionesArchive['ofertas']['opengraph_image_size'] = 100; 

但現在,它不工作,但在過去工作正常,過濾器是表格模塊yoast SEO https://yoast.com/wordpress/plugins/seo/

Y用這個Wordpress: How to return value when use add_filter?

我有點困惑,因爲這樣的:

add_filter('wpseo_title', function(){return 'foo';} 

作品外get_archive_seo功能,但沒有內部功能的作品。

任何人都可以幫助我嗎?

回答

0

你可以這樣使用,這可能對你有幫助。

function title_function_name($title) { 
    $title = "Your title write here"; 
    return $title; 
} 

add_filter('wp_title', 'title_function_name', 15); 
if (!has_filter('wpseo_title')) 
    add_filter('wpseo_title', 'title_function_name', 15); 
+0

在這種情況下,它將不得不爲我想修改的每種類型的標籤寫一個函數。在我的功能中,我有一個「foreach」,問題是「爲什麼這不起作用?」它工作了一段時間,爲什麼「add_filter」不能在函數內部工作? – Sakrow

+0

@Sakrow我們必須將它保留在外面 - 爲了您的嘗試。在開始執行任何實際輸出之前,您通常希望WP在讀取所有PHP時設置篩選器和操作。 –

相關問題