【问题标题】:Add Product SKU to Product Title in Woocommerce single product page & shop page在 Woocommerce 单品页面和商店页面中将产品 SKU 添加到产品标题
【发布时间】:2019-07-26 09:31:02
【问题描述】:

我想将产品 sku 添加到实际产品标题中。 例如,如果产品名称是“Dress design”且产品 sku 是“2790” 新产品标题应为“Dress design - 2790”。

我尝试过以下代码。但此代码将产品标题替换为单个产品页面上的产品 SKU。

add_action( 'woocommerce_single_product_summary', 'replace_product_title_by_product_sku', 4 );
function replace_product_title_by_product_sku() {
    global $product;

    if ( $product->get_sku() ) {
        remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );
        add_action( 'woocommerce_single_product_summary', 'display_product_sku_as_title', 5 );
    }
}

function display_product_sku_as_title() {
    global $product;

    echo '<h1 class="product_title entry-title">' . esc_html( $product->get_sku() ) . '</h1>';
}

但我想要“产品标题 + Sku”,并且我想在单个产品页面和商店页面和结帐页面和购物车页面上显示它。

【问题讨论】:

    标签: wordpress woocommerce hook-woocommerce


    【解决方案1】:

    您为什么不直接通过将 SKU 附加到当前标题而不是仅更改视图来更改标题?

    function append_sku_to_titles() {
    
     $all_ids = get_posts( array(
        'post_type' => 'product',
        'numberposts' => -1,
        'post_status' => 'publish',
        'fields' => 'ids'
    ));
    
    foreach ( $all_ids as $id ) {
            $_product = wc_get_product( $id );
            $_sku = $_product->get_sku();
            $_title = $_product->get_title();
    
            $new_title = $_title . " " . $_sku;
    
            /*
            *   Tested.
            *   echo $_title + $_sku;
            *   echo("<script>console.log('Old: ".$_title. " - ". $_sku."');</script>");
            *   echo("<script>console.log('New: ".$new_title."');</script>");
            */
    
            $updated = array();
            $updated['ID'] = $id;
            $updated['post_title'] = $new_title;
    
            wp_update_post( $updated );
    }}
    
    //Call the function with footer (*Attention)
    add_action( 'wp_footer', 'append_sku_to_titles' );
    

    *注意:更改标题后不要忘记删除此行(add_action),因为它会在页面加载时尝试更改它们

    【讨论】:

    • 感谢您的帮助,我已将此代码添加到我的 functions.php 文件中。但什么也没发生。
    • 你应该调用这个函数,只需在functions.php中添加“ add_action('wp_footer', 'append_sku_to_titles'); ”然后打开你的主页,它会改变标题。注意:更改标题后删除此操作,否则每次页面加载时都会尝试更改标题。
    【解决方案2】:

    只需替换这一行:

    echo '<h1 class="product_title entry-title">' . esc_html( $product->get_sku() ) . '</h1>';
    

    与:

    echo '<h1 class="product_title entry-title">' . $product->get_title() . ' - ' . esc_html( $product->get_sku() ) . '</h1>';
    

    你已经完成了!

    【讨论】:

    • 但是如何添加到商店页面、结帐页面和购物车页面?
    猜你喜欢
    • 2014-05-27
    • 2017-02-21
    • 1970-01-01
    • 2017-10-09
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 2023-01-22
    相关资源
    最近更新 更多