Добавьте SKU продукта в название продукта на странице отдельного продукта Woocommerce и на странице магазина

я хочу добавить артикул продукта к фактическому названию продукта. например, если название продукта "Дизайн платья" и артикул продукта "2790" название нового продукта должно быть "Дизайн платья - 2790".

я пробовал следующий код. но этот код заменяет название продукта артикулом продукта на отдельных страницах продукта.

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», и я хочу отображать его на странице одного продукта, странице магазина, странице оформления заказа и странице корзины.

Как убрать количество товаров в категории WooCommerce
Как убрать количество товаров в категории WooCommerce
По умолчанию WooCommerce показывает количество товаров рядом с категорией, как показано ниже.
0
0
1 403
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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>';

Вы закончили с этим!

но как добавить его на страницу магазина, страницу оформления заказа и страницу корзины?

Embroidery Design Shop 26.07.2019 12:50
Ответ принят как подходящий

Почему бы вам не изменить заголовки напрямую, добавив 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.info('Old: ".$_title. " - ". $_sku."');</script>");
        *   echo("<script>console.info('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. но ничего не происходит.

Embroidery Design Shop 26.07.2019 15:42

Вы должны вызвать функцию, просто добавьте " add_action('wp_footer', 'append_sku_to_titles'); " в functions.php, затем откройте свою главную страницу, она изменит заголовки. Примечание. Удалите это действие после изменения заголовков, иначе оно будет пытаться изменить заголовки каждый раз при загрузке страницы.

MrEbabi 26.07.2019 16:03

Другие вопросы по теме