在電子商務網站上,有時我們需要將訪客從商品頁面導向到其他網站或頁面,例如合作夥伴網站、特定的促銷頁面等。這篇文章將介紹如何在 WooCommerce 中新增一個自定義功能,讓我們可以輕鬆管理商品頁面的重定向。
功能概述
我們將新增一個自定義欄位,讓網站管理員可以在 WooCommerce 的商品編輯頁面中設置重定向 URL,並加上一個選項來啟用或停用該重定向功能。此外,還會創建一個後台管理頁面,列出所有啟用了重定向的商品,方便管理。
實現步驟
1. 新增自定義欄位
首先,我們會在商品編輯頁面新增兩個自定義欄位:
- 重定向 URL:輸入希望訪客被導向的完整網址。
- 啟用重定向:打勾啟用該商品的重定向功能。
這樣,我們可以靈活地為不同的商品設置不同的重定向網址。
2. 設置自動重定向
當用戶訪問商品頁面時,我們將檢查該商品是否啟用了重定向功能。如果啟用了,則會自動將用戶導向到指定的重定向 URL。
3. 管理頁面
在網站後台,我們會新增一個「重定向管理」頁面,列出所有啟用了重定向的商品及其對應的 URL。這使得我們可以快速查看和管理所有設定了重定向的商品,進一步提升網站管理的效率。
完整代碼
以下是實現上述功能的完整代碼,將其添加到主題或子主題的 functions.php 文件中:
function add_redirect_url_functionality() {
// 添加自定義字段到產品編輯頁面
function add_custom_redirect_fields() {
echo '<div class="options_group">';
// 重定向 URL 輸入欄位
woocommerce_wp_text_input(
array(
'id' => '_custom_redirect_url',
'label' => __( '重定向 URL', 'woocommerce' ),
'placeholder' => 'http://example.com',
'desc_tip' => 'true',
'description' => __( '輸入要重定向的完整 URL。', 'woocommerce' )
)
);
// 啟用重定向選項
woocommerce_wp_checkbox(
array(
'id' => '_enable_custom_redirect',
'label' => __( '啟用重定向', 'woocommerce' ),
'description' => __( '勾選此項以啟用重定向。', 'woocommerce' ),
'desc_tip' => 'true',
)
);
echo '</div>';
}
add_action( 'woocommerce_product_options_general_product_data', 'add_custom_redirect_fields' );
// 保存自定義字段數據
function save_custom_redirect_fields( $post_id ) {
$custom_redirect_url = isset( $_POST['_custom_redirect_url'] ) ? $_POST['_custom_redirect_url'] : '';
$enable_custom_redirect = isset( $_POST['_enable_custom_redirect'] ) ? 'yes' : 'no';
update_post_meta( $post_id, '_custom_redirect_url', esc_url( $custom_redirect_url ) );
update_post_meta( $post_id, '_enable_custom_redirect', $enable_custom_redirect );
}
add_action( 'woocommerce_process_product_meta', 'save_custom_redirect_fields' );
// 在單一產品頁面加載時重定向
function redirect_to_custom_url() {
if ( is_product() ) {
global $post;
$enable_redirect = get_post_meta( $post->ID, '_enable_custom_redirect', true );
$redirect_url = get_post_meta( $post->ID, '_custom_redirect_url', true );
if ( $enable_redirect === 'yes' && ! empty( $redirect_url ) ) {
wp_redirect( esc_url( $redirect_url ) );
exit;
}
}
}
add_action( 'template_redirect', 'redirect_to_custom_url' );
// 添加管理頁面
function add_redirect_management_page() {
add_menu_page(
'重定向管理', // 頁面標題
'重定向管理', // 菜單標題
'manage_options', // 能力
'redirect-management', // 菜單 slug
'display_redirect_management_page', // 回調函數
'dashicons-admin-links' // 圖示
);
}
add_action( 'admin_menu', 'add_redirect_management_page' );
// 顯示重定向管理頁面
function display_redirect_management_page() {
?>
<div class="wrap">
<h1><?php _e( '產品重定向管理', 'woocommerce' ); ?></h1>
<table class="wp-list-table widefat fixed striped">
<thead>
<tr>
<th><?php _e( '產品名稱', 'woocommerce' ); ?></th>
<th><?php _e( '重定向 URL', 'woocommerce' ); ?></th>
<th><?php _e( '狀態', 'woocommerce' ); ?></th>
</tr>
</thead>
<tbody>
<?php
$args = array(
'post_type' => 'product',
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => '_enable_custom_redirect',
'value' => 'yes',
'compare' => '='
)
)
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
$product_id = get_the_ID();
$redirect_url = get_post_meta( $product_id, '_custom_redirect_url', true );
$enable_redirect = get_post_meta( $product_id, '_enable_custom_redirect', true );
echo '<tr>';
echo '<td>' . get_the_title() . '</td>';
echo '<td>' . esc_url( $redirect_url ) . '</td>';
echo '<td>' . ( $enable_redirect === 'yes' ? '啟用' : '未啟用' ) . '</td>';
echo '</tr>';
}
} else {
echo '<tr><td colspan="3">' . __( '目前沒有設定重定向的產品。', 'woocommerce' ) . '</td></tr>';
}
wp_reset_postdata();
?>
</tbody>
</table>
</div>
<?php
}
}
// 呼叫函數以初始化所有功能
add_redirect_url_functionality();
實用性與優勢
透過這個功能,我們可以輕鬆管理商品頁面的重定向,適用於以下情境:
- 跨站點銷售:導引訪客到其他網站進行購物。
- 促銷活動:將訪客導向特定的促銷頁面,提高銷售轉化率。
- 產品推薦:推薦相關產品或服務,增加收入來源。
希望這篇文章對你在 WooCommerce 中管理產品頁面的重定向有所幫助!