я хочу добавить артикул продукта к фактическому названию продукта. например, если название продукта "Дизайн платья" и артикул продукта "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», и я хочу отображать его на странице одного продукта, странице магазина, странице оформления заказа и странице корзины.
Просто замените эту строку:
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>';
Вы закончили с этим!
Почему бы вам не изменить заголовки напрямую, добавив 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. но ничего не происходит.
Вы должны вызвать функцию, просто добавьте " add_action('wp_footer', 'append_sku_to_titles'); " в functions.php, затем откройте свою главную страницу, она изменит заголовки. Примечание. Удалите это действие после изменения заголовков, иначе оно будет пытаться изменить заголовки каждый раз при загрузке страницы.
но как добавить его на страницу магазина, страницу оформления заказа и страницу корзины?