首页 文章

如何在WooCommerce中自定义URL和Breadcrumb?

提问于
浏览
0

我想为基于My WooCommerce的网站定制WooCommrece Breadcrumb和URL .

我的网站正在运行WooCommerce . 我面临的问题是自定义Breadcrumb和URL以便从太长时间内缩短 . 当我访问任何产品或类别页面时,URL将非常长,并且由于类别的长名称和类别的slug,Breadcrumb将非常长 .

所以,我需要像我将在woocommerce中为Breadcrumb添加替代类别名称的解决方案,并为URL添加替代slug .

这可以帮助我在WooCoommerce吗?我可以自定义WooCoomerce产品URL和Breadcrumb吗?

1 回答

  • 0

    我已经通过替代 Headers 为Breadcrumb进行了开发 .

    我的代码在下面..

    /*
    * Custom title for category
    */
    add_action('product_cat_add_form_fields','custom_taxonomy_add_new_meta_field', 10, 1);
    
    //admin side extra field
    function custom_taxonomy_add_new_meta_field() {
    ?>
    <div class="form-field">
        <label for="alternative_title"><?php _e('Alternative Title', 'store-front-child'); ?></label>
        <input type="text" name="alternative_title" id="alternative_title">
        <p class="description"><?php _e('Enter Alternative Title for Breadcrumb', 'store-front-child'); ?></p>
    </div>
    <?php
    }
    
    add_action('product_cat_edit_form_fields', 'custom_taxonomy_edit_meta_field', 10, 1);
    //admin side extra field when edit
    function custom_taxonomy_edit_meta_field($term) {
    $term_id = $term->term_id;
    $alternative_title = get_term_meta($term_id, 'alternative_title', true);
    $alternative_slug = get_term_meta($term_id, 'alternative_slug', true);
    ?>
    <tr class="form-field">
        <th scope="row" valign="top"><label for="alternative_title"><?php _e('Alternative Title', 'store-front-child'); ?></label></th>
        <td>
            <input type="text" name="alternative_title" id="alternative_title" value="<?php echo esc_attr($alternative_title) ? esc_attr($alternative_title) : ''; ?>">
            <p class="description"><?php _e('Enter Alternative Title for Breadcrumb', 'store-front-child'); ?></p>
        </td>
    </tr>
    <?php
    }
    
    add_action('edited_product_cat', 'custom_save_taxonomy_custom_meta', 10, 1);
    add_action('create_product_cat', 'custom_save_taxonomy_custom_meta', 10, 1);
    //save alternative title to database
    function custom_save_taxonomy_custom_meta($term_id) {
    $alternative_title = filter_input(INPUT_POST, 'alternative_title');
    update_term_meta($term_id, 'alternative_title', $alternative_title);
    }
    
    add_filter( 'woocommerce_get_breadcrumb', 'custom_change_breadcrumb' );
    //filter the woocommerce breadcrub text for category
    function custom_change_breadcrumb( $crumbs ) {
    global $post;
    echo $post->id;
    $new_crumb_array = array();
    if( !empty( $crumbs ) ):
        foreach ( $crumbs as $crumb ):
            $new_crumb = array();
            $new_crumb[0] = $crumb[0];
            $new_crumb[1] = $crumb[1];
            $cat = get_term_by( 'name', $crumb[0], 'product_cat' );
            $alternative_title = get_term_meta( $cat->term_id, 'alternative_title', true );
            if( !empty( $alternative_title ) ){
                $new_crumb[0] = $alternative_title;
            }
            $new_crumb_array[] = $new_crumb;
        endforeach;
    endif;
    
    return $new_crumb_array;
    }
    

相关问题