2017-06-16 86 views
0

我使用seo yoast的woocommerce。如果產品搜索沒有完成,我希望在產品詳細信息頁面上顯示定製分類標準的詳細信息。自定義搜索引擎優化的元標記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。你的意思是說使用add_action代替apply_filter? – Thomas

+0

不,請嘗試將您的add_action更改爲add_action(「wp_head」,「custom_metas」,99999);所以你確定你的更改是最後執行的?這有幫助嗎? –

回答

0

我找到了修復程序。

在single.php文件中,我在調用頭之前使用了過濾函數。

這裏是我的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); 
}