2017-02-13 4 views
1

私は苦労しています。タスクは、利用可能なWPフックを使用してYoast SEOファイルからechoを削除しています。この機能を無効にし、利用可能なWPのフックを使用してechoを削除する方法は機能からのエコーを削除する - ワードプレス

クラス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; 
} 

ありますか?それとももっと良い方法がありますか?

多くのありがとうございます。

+0

'echo'コマンドが条件付き実行パスにないことを考えると、' 'hook ''の呼び出しが' 'head()' '関数を完全に置き換える"フック "すべて)。 – eggyal

+0

@eggyalあなたはこの機能を私のものと置き換える何らかの方法を知っていますか? – Mitch

+1

あなたはその行を削除することであなたの人生がより良くなると説明できますか?他にもオプションがあります。 – RST

答えて

0

あり、あなたがそれをフィルタリングするためにフックget_headerwp_headを使用して、出力バッファをできることを示しますis a post at wordpress.stackexchangeは:

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.ことを期待...かもし

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

しかし、それはすべてのコメントを削除し、それがstrinよりも遅くなります:あなたはこのような何かにあなたの交換を変更することができ、それはそこに「anythere」を削除したいですg置き換えます。

+0

これは動作しますが、Yoastクラスの 'head()'関数をオーバーライドできるものは存在しません。 – Mitch

+0

あなたの要求は利用可能なフックを使用し、エコーを削除することでした。これはそうです。あなたは新しい質問が必要です。 – WEBjuju

関連する問題