以上就是给各位分享是否可以使用wpdb查询或woocommercewordpress中的ajax调用更新购物车总数?,同时本文还将给你拓展$wpdb->get_results中的$dynamicwpd
以上就是给各位分享是否可以使用 wpdb 查询或 woocommerce wordpress 中的 ajax 调用更新购物车总数?,同时本文还将给你拓展$ wpdb-> get_results中的$ dynamic wpdb查询未考虑第二个OR值、$ wpdb-> update在引用到数据库之前添加斜杠、$wpdb->update($table_name... 自 Wordpress 5.6 起在 cron 中不起作用、admin-ajax.php 上的 Wordpress AJAX 请求给出错误 400等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:- 是否可以使用 wpdb 查询或 woocommerce wordpress 中的 ajax 调用更新购物车总数?
- $ wpdb-> get_results中的$ dynamic wpdb查询未考虑第二个OR值
- $ wpdb-> update在引用到数据库之前添加斜杠
- $wpdb->update($table_name... 自 Wordpress 5.6 起在 cron 中不起作用
- admin-ajax.php 上的 Wordpress AJAX 请求给出错误 400
是否可以使用 wpdb 查询或 woocommerce wordpress 中的 ajax 调用更新购物车总数?
如何解决是否可以使用 wpdb 查询或 woocommerce wordpress 中的 ajax 调用更新购物车总数?
根据我的客户 HTML 设计,没有提供购物车页面设计而不是购物车,他们希望在 结帐页面 中显示 product name,image,price,sub-total and total
并计算结帐页面中的所有内容。
他们提供了结账页面设计,如
在此页面中,一旦用户填写表单并点击继续,它将转到下一个
第二页
在此页面中,会显示第一个表格填写数据并要求选择运输方式,选择方式后右侧的总数将更新并点击继续进入下一步
第三页....
在此页面中,显示上一页的详细信息,一旦点击立即付款按钮,就会创建一个订单。
我不知道如何管理这种情况,但我尝试使用 jQuery ajax 管理这些事情,但是一旦我进入第二页,我想根据更改运输方式更新总价。
我尝试了以下不同钩子的方法,但它不起作用。
add_action( ''woocommerce_calculated_total'',''custom_calculated_total'',10,2 );
function custom_calculated_total( $total,$cart ){
echo "dsfsd";exit();
return round( $total - ($total * 0.15),$cart->dp );
}
add_filter( ''woocommerce_calculated_total'',''woocommerce_header_add_to_cart_fragment'',''doAjax'' );
function woocommerce_header_add_to_cart_fragment( $wc_price ) {
$wc_price = 10.5;
return $wc_price;
}
一旦我使用了这个钩子,总数就会自动更新,而无需选择任何运输方式。
我还尝试了以下 ajax 调用,根据运输方式价格更改运输方式以更新购物车总数。
add_action(''wp_footer'',''checkout_billing_email_js_ajax'' );
function checkout_billing_email_js_ajax() {
// Only on Checkout
if( is_checkout() && ! is_wc_endpoint_url() ) :
?>
<script type="text/javascript">
jQuery(function($){
$(document).ready(function(){
$(document).on("click",".shipping_method",function(e) {
//alert($(this).val())
$.ajax({
type: ''POST'',url: wc_checkout_params.ajax_url,// url: cart_ajax.ajax_url,contentType: "application/x-www-form-urlencoded; charset=UTF-8",enctype: ''multipart/form-data'',data: {
''action'': ''ajax_order'',''fields'': $(''form.checkout'').serializeArray(),''user_id'': <?PHP echo get_current_user_id(); ?>,},success: function (result) {
console.log(result); // For testing (to be removed)
},error: function(error) {
console.log(error); // For testing (to be removed)
}
});
});
});
});
</script>
<?PHP
endif;
}
回调函数方法一
add_action(''wp_ajax_ajax_order'',''submited_ajax_order_data'');
add_action( ''wp_ajax_nopriv_ajax_order'',''submited_ajax_order_data'');
function submited_ajax_order_data()
{
global $woocommerce;
$valorTotal = 10.5;
WC()->cart->total = $valorTotal;
WC()->cart->calculate_totals();
wc_price($valorTotal);*/
$woocommerce->cart->set_total($woocommerce->cart->total + $valorTotal);
}
回调函数方法2:在回调函数中调用动作钩子时不起作用
add_action(''wp_ajax_ajax_order'',''submited_ajax_order_data'' );
function submited_ajax_order_data()
{
add_action( ''woocommerce_review_order_before_order_total'',''custom_cart_total'' );
}
function custom_cart_total() {
WC()->cart->total *= 10.25;
var_dump( WC()->cart->total);
}
我知道这是一个很大的问题,但有人帮助我如何做这件事。(我想根据更改运输方式更新购物车总数)
解决方法
您可以使用 woocommerce_cart_calculate_fees
挂钩添加折扣并自动更改订单总额。
也可以使用 woocommerce_calculated_total
钩子,但是您将无法跟踪应用的折扣(如果您必须重新计算一天的订单总数,除非您添加自定义订单元) .
使用 WC()->session->get(''chosen_shipping_methods'');
,您将获得一个数组,其中包含客户选择的运输方式的 ID。
我创建了两个变量:
$chosen_method_id
:返回所选送货方式的 id,如果您想检查特定送货区域的特定方法(例如local_pickup:6
)$chosen_method
:如果您只想检查flat_rate
、free_shipping
或local_pickup
,则返回要使用的运输方式类型
您选择要使用的那个。
那么:
// adds a custom discount to the cart based on the shipping method chosen
add_action( ''woocommerce_cart_calculate_fees'',''add_custom_discount_based_on_shipping_method'',10,1 );
function add_custom_discount_based_on_shipping_method( $cart ) {
if ( is_admin() && ! defined( ''DOING_AJAX'' ) )
return;
// returns an array with the ids of the selected shipping methods
$chosen_methods = WC()->session->get( ''chosen_shipping_methods'' );
if ( empty( $chosen_methods ) ) {
return $total;
}
// get the shipping method id (for example: "flat_rate:1")
$chosen_method_id = $chosen_methods[0];
// get the shipping method (for example: "flat_rate","free_shipping" or "local_pickup")
$chosen_method = explode( '':'',$chosen_method_id )[0];
switch ( $chosen_method ) {
case ''flat_rate'':
// 15% of discount
$percentage = 15;
break;
case ''free_shipping'':
// 10% of discount
$percentage = 10;
break;
case ''local_pickup'':
// 20% of discount
$percentage = 20;
break;
}
// gets cart contents total
$cart_total = $cart->cart_contents_total;
$discount = $cart_total * $percentage / 100;
if ( isset( $discount ) && $discount > 0 ) {
$cart->add_fee( __( "Discount",''woocommerce'' ),-$discount );
}
}
代码已经过测试并且可以工作。将它添加到您的活动主题的functions.php。
$ wpdb-> get_results中的$ dynamic wpdb查询未考虑第二个OR值
如何解决$ wpdb-> get_results中的$ dynamic wpdb查询未考虑第二个OR值?
我有一个SQL查询,返回与列值匹配的结果的平均值和计数。问题在于$ wpdb结果有效,但仅获取动态查询中第一个值的结果。为了进行测试,我已经查询到它正在构造回显到页面的查询,并且使用PHP myadmin查询数据库时,它会正确获取结果(返回麻烦的owner_name可能性)。
此外,当将此静态查询硬编码为$ wpdb-> get_results时,它也可以正常工作。但是,在运行$ wpdb-> prepare时,尽管它清除并回显了与硬编码查询相同的查询,但结果并未考虑到owner_name的第二个参数,而仅搜索与雇主名称的第一个值匹配的值,而不是两者兼有。
下面的$ test sql是手动编写的查询,它可以正常工作并获取两个雇主名称值的结果
$test_sql = "SELECT COUNT(salary),AVG(salary) FROM table_name WHERE city = ''city''
AND pending <> ''pending'' AND employer_name = ''employer_name'' OR
employer_name = ''employer_name_two''";
这是上面示例的动态sql构造函数。尽管它回显了看似相同的查询,但它减去了owner_name的第二个值,因此仅获取了一些值。
$dynamic_sql = "SELECT COUNT(salary),AVG(salary) FROM table_name WHERE
city = %s AND pending <> %s AND employer_name = %s OR employer_name = %s";
$safe_sql = $wpdb->prepare($dynamic_sql,array( $city_name,''pending'',$employer_name,$employer_name_two));
$result = $wpdb->get_results($safe_sql);
我想念什么?谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
$ wpdb-> update在引用到数据库之前添加斜杠
如何解决$ wpdb-> update在引用到数据库之前添加斜杠
我有一个表单,可以从中获取POST数据,我将遍历每个数据并将其更新到数据库。但是问题是它不能正确处理引号。报价被剥夺了。我尝试了不同的方法,但是都失败了。请指导。
foreach ($_POST as $param_name => $param_val) {
// code removed for clarity
$data = array($col_name => $param_val);
$where = array($col_id => $col_id_val);
// run the query
$wpdb->update($table_name,$data,$where);
}
如果对于What''s my name?
有类似$param_val
的输入,则在数据库中它将更新为What\\''s my name?
。
请帮助。
解决方法
如果有人在寻找答案,这就是我使用wp_unslash
foreach (wp_unslash($_POST) as $param_name => $param_val)
从以下答案中汲取灵感:https://stackoverflow.com/a/7342562/1230252
,是的,这是因为它破坏了SQL语句,因此应使用准备好的语句来避免此问题。 $update = "UPDATE ".$table_name." SET ".$col_name."=''What''s my name?'' WHERE ".$col_id."=".$col_id_val;
这是它的链接:https://www.w3schools.com/php/php_mysql_prepared_statements.asp
$wpdb->update($table_name... 自 Wordpress 5.6 起在 cron 中不起作用
如何解决$wpdb->update($table_name... 自 Wordpress 5.6 起在 cron 中不起作用
我在数据库中有自己的表,并通过在 cron 中读取和写入数据库的 XML 文件更新它们;它运行良好,直到 5.6;现在它不会更新数据库,也没有错误消息...
在 cron 中:
$wpdb->update($table_name,array(
''ID'' => $agenda->ID,....
),array( ''ID'' => $agenda->ID),//Where
array(
''%d'',...''
),array(''%d'')
);
admin-ajax.php 上的 Wordpress AJAX 请求给出错误 400
也许你需要这样的东西:
function my_enqueue() {
wp_enqueue_script( 'ajax-script',get_template_directory_uri() . '/js/my-ajax-script.js',array('jquery') );
wp_localize_script( 'ajax-script','my_ajax_object',array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
}
add_action( 'wp_enqueue_scripts','my_enqueue' );
今天的关于是否可以使用 wpdb 查询或 woocommerce wordpress 中的 ajax 调用更新购物车总数?的分享已经结束,谢谢您的关注,如果想了解更多关于$ wpdb-> get_results中的$ dynamic wpdb查询未考虑第二个OR值、$ wpdb-> update在引用到数据库之前添加斜杠、$wpdb->update($table_name... 自 Wordpress 5.6 起在 cron 中不起作用、admin-ajax.php 上的 Wordpress AJAX 请求给出错误 400的相关知识,请在本站进行查询。
本文标签: