2017-02-13 27 views
1

我正在努力完成一項艱鉅的任務。任務是使用可用的WP鉤子從Yoast SEO文件中刪除echo刪除函數的回顯 - WordPress

類frontend.php

public function head() { 
    global $wp_query; 

    $old_wp_query = null; 

    if (! $wp_query->is_main_query()) { 
     $old_wp_query = $wp_query; 
     wp_reset_query(); 
    } 

    /** 
    * Action: 'wpseo_head' - Allow other plugins to output inside the Yoast SEO section of the head section. 
    */ 
    do_action('wpseo_head'); 

    echo '<!--/', $this->head_product_name(), ". -->\n\n"; // <-- remove this 

    if (! empty($old_wp_query)) { 
     $GLOBALS['wp_query'] = $old_wp_query; 
     unset($old_wp_query); 
    } 

    return; 
} 

有沒有辦法超越此功能,並使用現有的WP鉤去掉echo?還是有更好的方法來做到這一點?

非常感謝。

+0

鑑於echo命令不在條件執行路徑中,顯然沒有辦法調用「hook」可以避免它被調用(除了「hook」完全替換了head()函數共)。 – eggyal

+0

@eggyal你知道用我自己的方式替換這個函數嗎? – Mitch

+1

你能解釋一下如何消除這條線讓你的生活變得更好嗎?可能有其他選擇。 – RST

回答

0

is a post at wordpress.stackexchange,表示可以使用鉤get_headerwp_head輸出緩衝器來過濾出:

add_action('get_header', 'ad_ob_start'); 
add_action('wp_head', 'ad_ob_end_flush', 100); 
function ad_ob_start() { 
    ob_start('ad_filter_wp_head_output'); 
} 
function ad_ob_end_flush() { 
    ob_end_flush(); 
} 
function ad_filter_wp_head_output($output) { 
    if (defined('WPSEO_VERSION')) { 
    $output = str_ireplace('<!--/Yoast WordPress SEO plugin. -->', '', $output); 
    } 
    return $output; 
} 

那等着您$this->head_product_name()/ Yoast WordPress SEO plugin.,所以你可能要改變這種...或者,如果你希望它去掉「anythere」在那裏,您可以更換改變這樣的事情:

$output = preg_replace('/<!-- .* -->/Us', '', $output); 

但是,將刪除所有的意見,這將是比慢〜應變克替換。

+0

這會起作用,但是沒有任何東西可以覆蓋Yoast類中的head()函數? – Mitch

+0

你的請求是使用可用的鉤子並刪除回聲。這是做的。你需要一個新的問題。 – WEBjuju