2017-06-16 7 views
0

私はseo yoastでwoocommerceを使用しています。製品のSEOが完了していない場合、製品の詳細ページにカスタム分類のSEOの詳細を表示します。SEO Yoastのメタタグをカスタマイズする

function custom_metas() 
{ 
    if(is_product()){ 
     global $post; 
     $prod_meta_title = get_post_meta($post->ID, '_yoast_wpseo_title', true); 
     $prod_meta_desc = get_post_meta($post->ID, '_yoast_wpseo_metadesc', true); 
     $prod_meta_kw = get_post_meta($post->ID, '_yoast_wpseo_focuskw', true); 

     if(empty($prod_meta_desc) && empty($prod_meta_title) && empty($prod_meta_kw)) 
     { 
      $terms = get_the_terms($post->ID, 'brand'); 
      $meta = get_option('wpseo_taxonomy_meta'); 
      $terms = array_reverse($terms); 
      if(!empty($terms)) 
      { 
       $set_meta = 0; 
       foreach($terms as $term) 
       { 
        if($set_meta == 1) 
        { 
         break; 
        } 
        $term_meta_title = $meta["brand"][$term->term_id]['wpseo_title']; 
        $term_meta_desc = $meta["brand"][$term->term_id]['wpseo_desc']; 
        $term_meta_keywords = $meta["brand"][$term->term_id]['wpseo_focuskw']; 
        if(!empty($term_meta_title) || !empty($term_meta_desc) || !empty($term_meta_keywords)) 
        { 
         echo "coming"; 
         //wpseo_replace_vars($term_meta_title, get_post($post_id, ARRAY_A)) 
         apply_filters('wpseo_title', "tseting"); 
         apply_filters('wpseo_metadesc', trim($term_meta_desc)); 
         apply_filters('wpseo_metakey', trim($term_meta_keywords)); 
         $set_meta = 1; 
        } 
       } 
      } 
     } 
    } 
} 
add_action("wp_head","custom_metas"); 

マイカスタム分類がブランドである:ここでは

は、私がしようとしていますものです。問題は、SEOの詳細が既存のものを上書きしていないことです。

これをどのように達成できますか?

+0

は、アクションの優先度でプレイしてみ? –

+0

あなたのお返事ありがとうございます。NerijusMasikonis。あなたは、apply_filterの代わりにadd_actionを使用すると言っていますか? – Thomas

+0

いいえ、add_actionをadd_action( "wp_head"、 "custom_metas"、99999)に変更してみてください。あなたはあなたの変更が最後に実行されることを確信していますか?それは役に立ちますか? –

答えて

0

修正が見つかりました。

single.phpファイルでは、ヘッダを呼び出す前にfilter関数を使用しました。ここで

私のsingle.phpは

<?php 

    if (! defined('ABSPATH')) { 
     exit; // Exit if accessed directly 
    } 
    global $post, $product; 
    if(is_product()){ 
     global $post; 
     $prod_meta_title = get_post_meta($post->ID, '_yoast_wpseo_title', true); 
     $prod_meta_desc = get_post_meta($post->ID, '_yoast_wpseo_metadesc', true); 
     $prod_meta_kw = get_post_meta($post->ID, '_yoast_wpseo_focuskw', true); 

     if(empty($prod_meta_desc) && empty($prod_meta_title) && empty($prod_meta_kw)) 
     { 
      add_filter('wpseo_metadesc', 'custom_metadesc', 100,1); 
      add_filter('wpseo_metakey', 'custom_metakeywords', 100,1); 
     } 
    } 
    get_header('shop'); ?> 

され、テーマのfunction.phpに、私はこれらのフィルタ機能を定義した:

function custom_metadesc($desc){ 
    global $post; 
    $terms = get_the_terms($post->ID, 'brand'); 
    $meta = get_option('wpseo_taxonomy_meta'); 
    $terms = is_array($terms) ? array_reverse($terms) : $terms; 
    if(!empty($terms)) 
    { 
     $set_meta = 0; 
     foreach($terms as $term) 
     { 
      if($set_meta == 1) 
      { 
       break; 
      } 
      $term_meta_desc = $meta["brand"][$term->term_id]['wpseo_desc']; 
      if(!empty($term_meta_desc)) 
      { 
       $desc = $term_meta_desc; 
       $set_meta = 1; 
      } 
     } 
    } 
    return trim($desc); 
} 

function custom_metakeywords($keywords){ 
    global $post; 
    $terms = get_the_terms($post->ID, 'brand'); 
    $meta = get_option('wpseo_taxonomy_meta'); 
    $terms = array_reverse($terms); 
    if(!empty($terms)) 
    { 
     $set_meta = 0; 
     foreach($terms as $term) 
     { 
      if($set_meta == 1) 
      { 
       break; 
      } 
      $term_meta_keywords = $meta["brand"][$term->term_id]['wpseo_focuskw']; 
      if(!empty($term_meta_keywords)) 
      { 
       $keywords = $term_meta_keywords; 
       $set_meta = 1; 
      } 
     } 
    } 
    return trim($keywords); 
} 
関連する問題