2017-05-22 75 views
1

我在Meta标题& Meta元描述中使用了所有内容。我的网站WooCommerce和所有在一个搜索引擎优化包不支持元标题& WooCommerce类别页面的元描述。如何在WooCommerce类别页面中添加元标题和元描述

因此,我使用下面的代码为Meta标题&为管理区域中的WooCommerce类别创建了自定义字段。

function wh_taxonomy_add_new_meta_field() { 
    ?> 

    <div class="form-field"> 
     <label for="wh_meta_title"><?php _e('Meta Title', 'wh'); ?></label> 
     <input type="text" name="wh_meta_title" id="wh_meta_title"> 
     <p class="description"><?php _e('Enter a meta title, <= 60 character', 'wh'); ?></p> 
    </div> 
    <div class="form-field"> 
     <label for="wh_meta_desc"><?php _e('Meta Description', 'wh'); ?></label> 
     <textarea name="wh_meta_desc" id="wh_meta_desc"></textarea> 
     <p class="description"><?php _e('Enter a meta description, <= 160 character', 'wh'); ?></p> 
    </div> 
    <?php 
} 

//Product Cat Edit page 
function wh_taxonomy_edit_meta_field($term) { 

    //getting term ID 
    $term_id = $term->term_id; 

    // retrieve the existing value(s) for this meta field. 
    $wh_meta_title = get_term_meta($term_id, 'wh_meta_title', true); 
    $wh_meta_desc = get_term_meta($term_id, 'wh_meta_desc', true); 
    ?> 
    <tr class="form-field"> 
     <th scope="row" valign="top"><label for="wh_meta_title"><?php _e('Meta Title', 'wh'); ?></label></th> 
     <td> 
      <input type="text" name="wh_meta_title" id="wh_meta_title" value="<?php echo esc_attr($wh_meta_title) ? esc_attr($wh_meta_title) : ''; ?>"> 
      <p class="description"><?php _e('Enter a meta title, <= 60 character', 'wh'); ?></p> 
     </td> 
    </tr> 
    <tr class="form-field"> 
     <th scope="row" valign="top"><label for="wh_meta_desc"><?php _e('Meta Description', 'wh'); ?></label></th> 
     <td> 
      <textarea name="wh_meta_desc" id="wh_meta_desc"><?php echo esc_attr($wh_meta_desc) ? esc_attr($wh_meta_desc) : ''; ?></textarea> 
      <p class="description"><?php _e('Enter a meta description', 'wh'); ?></p> 
     </td> 
    </tr> 
    <?php 
} 

add_action('product_cat_add_form_fields', 'wh_taxonomy_add_new_meta_field', 10, 1); 
add_action('product_cat_edit_form_fields', 'wh_taxonomy_edit_meta_field', 10, 1); 

// Save extra taxonomy fields callback function. 
function wh_save_taxonomy_custom_meta($term_id) { 

    $wh_meta_title = filter_input(INPUT_POST, 'wh_meta_title'); 
    $wh_meta_desc = filter_input(INPUT_POST, 'wh_meta_desc'); 

    update_term_meta($term_id, 'wh_meta_title', $wh_meta_title); 
    update_term_meta($term_id, 'wh_meta_desc', $wh_meta_desc); 
} 

add_action('edited_product_cat', 'wh_save_taxonomy_custom_meta', 10, 1); 
add_action('create_product_cat', 'wh_save_taxonomy_custom_meta', 10, 1); 

上面的代码在管理区域完美地工作。但如何显示输入的元标题&在类别页面前端的元描述?

我应该在functions.php文件中添加什么钩子以便它显示在前端的类别页面中?

+0

你使用任何seo插件? –

+0

是所有在一个包装 – Manoj

回答

2

修改METAS的显示/过滤 将工作由于此插件修改了所有标题,所以您必须使用 aioseop_title,为Meta标题过滤。对于Meta 描述你必须使用wp_head

对于元标题

add_filter('aioseop_title', 'wh_alter_pro_cat_title', 1); 

function wh_alter_pro_cat_title($title) 
{ 
    global $paged; 
    if (is_product_category()) 
    { 
     $page = get_query_var('page'); 
     if ($paged > $page) 
     { 
      $page = $paged; 
     } 

     $term = get_queried_object(); 
     $title = get_term_meta($term->term_id, 'wh_meta_title', true); 
     $title = !empty($title) ? $title : $term->name; 
     $page_part = (!empty($page) && ($page > 1)) ? ' | ' . 'Page ' . $page : ''; 
     $title .= ' | ' . get_bloginfo('name') . $page_part; 
    } 
    return $title; 
} 

对于meta描述

add_action('wp_head', 'wh_alter_pro_cat_desc', 5); 

function wh_alter_pro_cat_desc() 
{ 
    if (is_product_category()) 
    { 
     $term = get_queried_object(); 
     $productCatMetaDesc = get_term_meta($term->term_id, 'wh_meta_desc', true); 
     if (empty($productCatMetaDesc)) 
      return; 

     ?> 
     <meta name="description" content="<?= $productCatMetaDesc; ?>"> 
     <?php 
    } 
} 

的所有代码都在functions.php文件的活跃儿童主题(或主题)的。或者也可以在任何插件php文件中使用。
代码已经过测试和工作。

有用的链接:

希望这有助于!

+0

谢谢你!它的工作... – Manoj

+0

当我为我的一个客户开发一个Woo商店时,我很久以前面临同样的问题,而且我没有得到任何有用的解决方案,所以我编写了该教程和答案。并很高兴它可以帮助你。不要忘记加入并接受我的回答。 –

+0

已经upvoted和接受 – Manoj

0

请检查:

// Display details on product category archive pages 
add_action('woocommerce_after_shop_loop', 
'wpm_product_cat_archive_add_meta'); 
function wpm_product_cat_archive_add_meta() { 
$t_id = get_queried_object()->term_id; 
$term_meta = get_option("taxonomy_$t_id"); 
$term_meta_content = $term_meta['custom_term_meta']; 
if ($term_meta_content != '') { 
echo '<div class="woo-sc-box normal rounded full">'; 
    echo apply_filters('the_content', $term_meta_content); 
echo '</div>'; 
} 
} 

谢谢

+0

感谢您的帮助,但没有工作 – Manoj

0

可以显示在前端自定义元标题和meta描述使用以下钩子。

add_action('woocommerce_after_shop_loop','display_custom_meta_info'); 
    function display_custom_meta_info(){ 
     global $wp_query; 
     $cat_obj = $wp_query->get_queried_object(); 
     $title_meta = get_term_meta($cat_obj->term_id 
    ,'wh_meta_title',true); 
     $desc_meta = get_term_meta($cat_obj->term_id 
    ,'wh_meta_desc',true); 

     $woocommerce_taxonomy_archive_description = $title_meta.$desc_meta; 

return $woocommerce_taxonomy_archive_description; 

    } 

您可以随时使用其他挂钩的当你正在使用的所有在一个搜索引擎优化,因此所有WP默认勾继template structure

+0

嗨,感谢您的帮助,但它不工作 – Manoj

+0

仍然没有运气.. – Manoj

+0

检查此代码里面,存档产品。php global $ wp_query; $ cat_obj = $ wp_query-> get_queried_object(); $ title_meta = get_post_meta($ cat_obj-> term_id; ,'wh_meta_title',true); $ desc_meta = get_post_meta($ cat_obj-> term_id; ,'wh_meta_desc',true); 呼应$ title_meta和$ desc_meta –

相关问题