我有 woocommerce 商店,例如:example.com/store/
我正在 WordPress 之外创建一些产品销售页面:example.com/upsell.php
现在,我想在您访问 example.com/upsell.php 后清除购物车,因为我们在追加销售中执行了多个步骤,最后我们发送了一个 url 请求以将产品添加到购物车中 (example.com/store/购物车/?添加到购物车=1,5,8)。
每当您访问追加销售页面时,我们都需要清除购物车会话。
如何从追加销售页面清除购物车会话?
我正在尝试使用挂钩将我的自定义添加meta_query到 WooCommerce 主查询woocommerce_product_query。
我尝试了这段代码:
function testing_woo_product_query( $q ){
$args = array(
'relation' => 'AND',
array(
'meta_key' => '_price',
'value' => 10,
'compare' => '>=',
),
array(
'meta_key' => '_price',
'value' => 30,
'compare' => '<=',
)
);
$q->set( 'meta_query', $args );
}
add_action( 'woocommerce_product_query', 'testing_woo_product_query' );
Run Code Online (Sandbox Code Playgroud)
但代码不起作用。谁能告诉我问题出在哪里?
在 WooCommerce 中,我一直在对模板进行一些编辑。到目前为止,这一切都是直截了当的。
现在,我尝试将一些列添加到“我的帐户 > 查看订单”下的“订单详细信息”表中。
我位于模板 view-order.php 中,它是 WooCommerce 中“myaccount”下的模板。
我没有看到模板中需要编辑的某些代码,而是看到以下代码:
<?php do_action( 'woocommerce_view_order', $order_id ); ?>
Run Code Online (Sandbox Code Playgroud)
此操作的代码在哪里调用?我可以编辑它吗?
感谢您的所有时间和帮助。
我已经在 wooommerce 中创建了自定义商店页面,然后删除了所有代码archive-product.php并添加了以下代码,它正在显示产品。
defined( 'ABSPATH' ) || exit;
get_header( 'shop' );
/**
* Hook: woocommerce_before_main_content.
*
* @hooked woocommerce_output_content_wrapper - 10 (outputs opening divs for the content)
* @hooked woocommerce_breadcrumb - 20
* @hooked WC_Structured_Data::generate_website_data() - 30
*/
do_action( 'woocommerce_before_main_content' );
?>
<div class="container">
<div class="products">
<div class="row">
<?php
$args = array(
'post_type' => 'product',
'posts_per_page' => 12
);
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
while ( $loop->have_posts() ) : $loop->the_post();
wc_get_template_part( 'content', …Run Code Online (Sandbox Code Playgroud) 您好,我正在尝试在 mu 插件中创建一个功能,以防止某些用户将订单状态从特定订单状态更改为特定订单状态。
我到处寻找,尝试了很多不同的方法,但似乎没有任何效果。
实际上该函数是使用woocommerce_order_status_changed动作钩子运行的。问题是这个钩子在订单状态已经改变之后运行,这导致了无限循环。
我发现的最有用的钩子似乎是woocommerce_before_order_object_save.
我在 WooCommerce Github 上发现了“添加附加参数以防止调用‘woocommerce_order_status_changed’”有用的相关线程。
我尝试使用@kloon代码片段解决方案:
add_filter( 'woocommerce_before_order_object_save', 'prevent_order_status_change', 10, 2 );
function prevent_order_status_change( $order, $data_store ) {
$changes = $order->get_changes();
if ( isset( $changes['status'] ) ) {
$data = $order->get_data();
$from_status = $data['status'];
$to_status = $changes['status'];
// Do your logic here and update statuses with CRUD eg $order->set_status( 'completed' );
// Be sure to return the order object
}
return $order;
}
Run Code Online (Sandbox Code Playgroud)
但$changes变量始终是一个空数组。
我尝试使用 …
我正在开发一个项目,其中我的帐户页面是主页。所以我所做的就是创建了一个包含短代码的页面[woocommerce_my_account],并从仪表板->设置->阅读将此页面设为主页。一切正常。我也有这个工作端点:
但当我制作自定义 myaccount 端点时,我遇到了麻烦。我用这种传统的方式来做:
add_action('woocommerce_account_custom-endpoint_endpoint', function(){
echo 'hello';
} );
add_action('init', function() {
add_rewrite_endpoint('custom-endpoint', EP_ROOT | EP_PAGES);
});
Run Code Online (Sandbox Code Playgroud)
但 mydomain.com/custom-endpoint 并不是指向我的帐户页面,而是指向 index.php 或 page.php (WordPress 模板层次结构)。
我很好奇为什么会发生这种情况?
我正在尝试对 Wordpress Woocommerce 进行编码,以便所有新订单都按订单状态标记为“完成”。该代码不起作用。我究竟做错了什么?
我将此添加到functions.php:
function autocomplete_orders() {
add_action('woocommerce_thankyou', 'autocomplete_all_orders');
/**
* sp_autocomplete_all_orders
*
* Register custom tabs Post Type
*
* @param int $order_id
*
* @return null
*/
function autocomplete_all_orders($order_id) {
global $woocommerce;
if (!$order_id)
return;
$order = new WC_Order($order_id);
$order->update_status('completed');
}
}
Run Code Online (Sandbox Code Playgroud) 我对functions.php中的这个简单功能已经足够了解,让我为优惠券添加一个复选框。但是,一旦我保存/更新了优惠券,我的复选框值(已选中/未选中)就不会提交(因此该复选框始终处于未选中状态)。换句话说,当我更新/保存时,无法在postmetas的meta_value列中将其更新为yes。复选框在那里,我就是无法使用...非常沮丧!关于我做错的任何建议,请:)
function add_coupon_revenue_dropdown_checkbox() {
$post_id = $_GET['post'];
woocommerce_wp_checkbox( array( 'id' => 'include_stats', 'label' => __( 'Coupon check list', 'woocommerce' ), 'description' => sprintf( __( 'Includes the coupon in coupon check drop-down list', 'woocommerce' ) ) ) );
$include_stats = isset( $_POST['include_stats'] ) ? 'yes' : 'no';
update_post_meta( $post_id, 'include_stats', $include_stats );
do_action( 'woocommerce_coupon_options_save', $post_id );
}add_action( 'woocommerce_coupon_options', 'add_coupon_revenue_dropdown_checkbox', 10, 0 );
Run Code Online (Sandbox Code Playgroud)
我要影响的部分是:
wp-content / plugins / woocommerce / includes / admin / meta-boxes / class-wc-meta-box-coupon-data.php
嗨,我正在实施一个支付网关插件但有问题.它显示了一个错误,他们说这是因为购物车的总金额和价格网站为他们发送的总金额是不同的.这是因为他们得到的没有十进制数字.在购物车中它是519.00,他们只收到519.
这个插件按$order->get_total()功能获得购物车总数.是否有任何方法使功能get_total()接受订单价格已经与.00?或者如果它是519.5使它成为519.50等等?
更改插件中的功能可能也有效但我尝试了其他功能,WC()->cart->total但它也显示了没有小数的总数.
在Woocommerce中,我尝试使用下面的代码使结帐地址字段不是必需的…但是,在提交结帐表格时,出现了此错误 “请输入地址以继续”。
我的用于设置地址结帐字段的代码不是必需的:
add_filter( 'woocommerce_billing_fields', 'wc_npr_filter_phone', 10, 1
);
function wc_npr_filter_phone( $address_fields ) {
$address_fields['billing_phone']['required'] = true;
$address_fields['billing_country']['required'] = false;
$address_fields['billing_last_name']['required'] = false;
$address_fields['billing_city']['required'] = false;
$address_fields['billing_postcode']['required'] = false;
$address_fields['billing_email']['required'] = false;
$address_fields['billing_state']['required'] = false;
$address_fields['billing_address_1']['required'] = false;
$address_fields['billing_address_2']['required'] = false;
return $address_fields;
}
//make shipping fields not required in checkout
add_filter( 'woocommerce_shipping_fields',
'wc_npr_filter_shipping_fields', 10, 1 );
function wc_npr_filter_shipping_fields( $address_fields ) {
$address_fields['shipping_first_name']['required'] = false;
$address_fields['shipping_last_name']['required'] = false;
$address_fields['shipping_address_1']['required'] = false;
$address_fields['shipping_address_2']['required'] = false;
$address_fields['shipping_city']['required'] = false;
$address_fields['shipping_country']['required'] = …Run Code Online (Sandbox Code Playgroud) hook-woocommerce ×10
woocommerce ×10
wordpress ×10
php ×8
checkbox ×1
checkout ×1
endpoint ×1
orders ×1
price ×1
templates ×1