
您现在的位置是:首页 > WordPress教程WordPress教程
WordPress购物车添加
WP集市
2025-09-09
【WordPress教程】
947人已围观
-
好的,咱们直接开始。WordPress这玩意儿搞购物车,其实路子挺多的。最省心的办法?装个WooCommerce插件呗。但今天不说这个,说点手搓的,虽然可能有点绕,但有意思啊。你想想,有时候客户就想要个简单的“加入购物车”按钮,不想搞整个电商系统,太重了。行,那就自己来。
-
首先,你得在主题里动手脚。打开你的主题文件夹,找到 functions.php 文件。别怕,就是它。在这里,我们得先定义一下“商品”是啥。WordPress里,其实任何文章类型都能当商品,但为了简单,我们就用文章吧。来,加段代码:
// 在functions.php里添加自定义字段,用于商品价格
function add_price_meta_box() {
add_meta_box( 'product_price', '商品价格', 'price_meta_box_callback', 'post' );
}
add_action( 'add_meta_boxes', 'add_price_meta_box' );
function price_meta_box_callback( $post ) {
$price = get_post_meta( $post->ID, '_product_price', true );
echo '<input type="number" name="product_price" value="' . esc_attr( $price ) . '" step="0.01" />';
}
function save_price_meta( $post_id ) {
if ( isset( $_POST['product_price'] ) ) {
update_post_meta( $post_id, '_product_price', sanitize_text_field( $_POST['product_price'] ) );
}
}
add_action( 'save_post', 'save_price_meta' );
这段代码干嘛用?它给文章编辑页面加了个框,让你输入价格。保存后,价格就存到自定义字段里了。简单吧?但这就是基础。
- 接下来,得让用户能点“加入购物车”。你可以在文章模板里(比如 single.php)加个按钮。但更灵活的办法是用钩子,比如在内容后面自动添加。再来一段:
// 在文章内容后显示加入购物车按钮
function add_to_cart_button_after_content( $content ) {
if ( is_single() && in_the_loop() ) {
$price = get_post_meta( get_the_ID(), '_product_price', true );
if ( ! empty( $price ) ) {
$button = '<form action="" method="post">';
$button .= '<input type="hidden" name="product_id" value="' . get_the_ID() . '">';
$button .= '<input type="submit" name="add_to_cart" value="加入购物车" style="padding:10px; background:#0073aa; color:white; border:none; cursor:pointer;">';
$button .= '</form>';
$content .= $button;
}
}
return $content;
}
add_filter( 'the_content', 'add_to_cart_button_after_content' );
这代码会在每篇文章底部加个表单,点按钮就提交。但注意,这里用了空action,意思是提交到当前页面。你得自己处理提交逻辑。
- 处理提交?对,就是当用户点按钮时,咱们得把商品ID存起来。存哪儿?Session呗。但WordPress默认不用Session,所以得先启动它。在functions.php开头加:
// 启动Session
function start_session() {
if ( ! session_id() ) {
session_start();
}
}
add_action( 'init', 'start_session', 1 );
然后,处理那个表单提交:
// 处理加入购物车操作
function handle_add_to_cart() {
if ( isset( $_POST['add_to_cart'] ) && isset( $_POST['product_id'] ) ) {
$product_id = intval( $_POST['product_id'] );
if ( ! isset( $_SESSION['cart'] ) ) {
$_SESSION['cart'] = array();
}
if ( isset( $_SESSION['cart'][ $product_id ] ) ) {
$_SESSION['cart'][ $product_id ] += 1;
} else {
$_SESSION['cart'][ $product_id ] = 1;
}
// 可以加个提示消息
wp_redirect( get_permalink( $product_id ) );
exit;
}
}
add_action( 'template_redirect', 'handle_add_to_cart' );
这段代码检查是否有提交,有就把商品ID塞进Session的cart数组里。如果已有就数量加一,没有就设为一。然后跳转回商品页面。
- 购物车有了,总得显示吧?做个购物车页面。先创建个页面模板,比如 page-cart.php。在里面循环输出Session中的商品:
// 在page-cart.php中部分代码
if ( isset( $_SESSION['cart'] ) && ! empty( $_SESSION['cart'] ) ) {
foreach ( $_SESSION['cart'] as $product_id => $quantity ) {
$product = get_post( $product_id );
$price = get_post_meta( $product_id, '_product_price', true );
echo '<p>' . esc_html( $product->post_title ) . ' - 数量: ' . $quantity . ' - 单价: ' . $price . '</p>';
}
} else {
echo '<p>购物车为空</p>';
}
这就能列出商品名、数量和单价了。当然,还能加总价计算,但你自己琢磨吧。
- 最后,别忘了清理购物车。加个清空按钮或类似功能。比如在购物车页面加个表单:
<form action="" method="post">
<input type="submit" name="empty_cart" value="清空购物车">
</form>
然后处理:
// 处理清空购物车
function handle_empty_cart() {
if ( isset( $_POST['empty_cart'] ) ) {
unset( $_SESSION['cart'] );
wp_redirect( home_url( '/cart/' ) ); // 假设购物车页面slug是cart
exit;
}
}
add_action( 'template_redirect', 'handle_empty_cart' );
- 瞧,一个简陋但可用的购物车就成了。当然,这只是思路,真要用还得考虑好多:安全性(防CSRF、XSS)、用户体验、支付集成等等。但WordPress就这好处,灵活。你想简单就用插件,想折腾就自己码。代码嘛,总是越写越明白,即使有点病句似的逻辑,跑起来就行。
Tags:
文章版权声明:除非注明,否则均为WP集市原创文章,转载或复制请以超链接形式并注明出处。
上一篇:WordPress结账流程优化
下一篇:WordPress推荐产品设置

热门文章
