Thêm .html vào link sản phẩm Woocommerce trong WordPress

Nếu bạn đang nâng cấp website từ website cũ sang website mới và muốn giữ lại các đường link có đuôi .html khi chuyển qua website sử dụng WordPress thì làm thế nào đây? Trong bài viết này Tam Nguyên xin được hướng dẫn các bạn cách thêm đuôi “.html” vào cho link sản phẩm trong woocommerce.

Lưu ý: Nếu bạn đang tìm kiếm trên Google sẽ thấy có nhiều trang hướng dẫn cách để thêm đuôi .html vào link sản phẩm trong wordpress nhưng sau khi thêm xong sẽ bị các lỗi 404, để sửa lỗi 404 bạn làm tuần tự theo các bước dưới đây nhé.

Cách thêm .html vào link sản phẩm trong woocommerce

Bạn mở file function.php theo đường dẫn: Giao diện > Sửa giao diện > function.php. Sau đó bạn dán đoạn code bên dưới vào file function.php và Lưu lại.

/** Đoạn code thêm đuôi .html vào cuối sản phẩm **/
function codfe_product_permastruct_html($post_type, $args) {
if ( $post_type === ‘product’)
add_permastruct($post_type, “{$args->rewrite[‘slug’]}/%$post_type%.html”, $args->rewrite);
}
add_action(‘registered_post_type’, ‘codfe_product_permastruct_html’, 10, 2);

Sau khi thêm code trên vào function.php bạn vào lại cài đặt đường dẫn tĩnh của web WordPress bạn nhấn Lưu thay đổi để URLs được update.

duoi html

Đến đây bạn vào website bạn sẽ hay bị tình trạng là trang sản phẩm sẽ bị báo lỗi 404 phải không. Để khắc phục điều này bạn tiếp tục dán đoạn code bên dưới vào file function.php và Lưu lại.

/*Sửa lỗi 404 sau khi đã remove slug product hoặc cua-hang*/
function devvn_woo_product_rewrite_rules($flash = false)
{
global $wp_post_types, $wpdb;
$siteLink = esc_url(home_url(‘/’));
foreach ($wp_post_types as $type=>$custom_post)
{
if($type == ‘product’)
{
if ($custom_post->_builtin == false)
{
$querystr = “SELECT {$wpdb->posts}.post_name, {$wpdb->posts}.ID
FROM {$wpdb->posts}
WHERE {$wpdb->posts}.post_status = ‘publish’
AND {$wpdb->posts}.post_type = ‘{$type}'”;
$posts = $wpdb->get_results($querystr, OBJECT);
foreach ($posts as $post)
{
$current_slug = get_permalink($post->ID);
$base_product = str_replace($siteLink,”,$current_slug);
add_rewrite_rule($base_product.’?$’, “index.php?{$custom_post->query_var}={$post->post_name}”, ‘top’);
add_rewrite_rule($base_product.’comment-page-([0-9]{1,})/?$’, ‘index.php?’.$custom_post->query_var.’=’.$post->post_name.’&cpage=$matches[1]’, ‘top’);
add_rewrite_rule($base_product.'(?:feed/)?(feed|rdf|rss|rss2|atom)/?$’, ‘index.php?’.$custom_post->query_var.’=’.$post->post_name.’&feed=$matches[1]’,’top’);
}
}
}
}
if ($flash == true)
flush_rewrite_rules(false);
}
add_action(‘init’, ‘devvn_woo_product_rewrite_rules’);

/*Fix lỗi khi tạo sản phẩm mới bị 404*/

function devvn_woo_new_product_post_save($post_id)
{
global $wp_post_types;
$post_type = get_post_type($post_id);
foreach ($wp_post_types as $type=>$custom_post)
{
if ($custom_post->_builtin == false && $type == $post_type)
{
devvn_woo_product_rewrite_rules(true);
}
}
}
add_action(‘wp_insert_post’, ‘devvn_woo_new_product_post_save’);

Sau đó bạn tiếp tục vào lại Cài đặt đường dẫn tĩnh của web WordPress bạn nhấn Lưu thay đổi để URLs được update.

Vậy là đã xong. Nếu bạn muốn xóa product, product-category trong URLs của sản phẩm mặt định, bạn có thể xem qua bài viết này cách xóa product, product-category trong URLs của Woocommerce.

Chat hỗ trợ
Chat ngay