php - 将操作按钮和“控制器”添加到订单列表(管理员)-WooCommerce
问题描述
几个小时以来,我试图添加一个带有“控制器”部分的操作按钮来接收请求。
我试图添加一个真正的“操作按钮”,但它不起作用。我从许多 StackOverflow 帖子中尝试了很多方法,但它不起作用。
因此,我添加了一个指向自定义列的链接:
add_filter( 'manage_edit-shop_order_columns', 'custom_set_order_columns' );
function custom_set_order_columns($columns){
$new_columns = (is_array($columns)) ? $columns : array();
unset( $new_columns['order_actions'] );
unset( $new_columns['order_total'] );
$new_columns['test_button'] = 'Test';
$new_columns['order_actions'] = $columns['order_actions'];
return $new_columns;
}
设置列值:
add_action( 'manage_shop_order_posts_custom_column', 'custom_set_order_column_values', 2 );
function custom_set_order_column_values($column){
global $post;
$order = wc_get_order( $post->ID );
$email = $order->get_billing_email();
$admin_ajax_url = admin_url("admin-ajax.php");
$link_btn = "<a href='#' class='button button-primary' onclick='start(\"$email\",\"$admin_ajax_url\")'>Start</a>";
if ( $column == 'test_button' ) {
echo $link_btn;
}
}
JS部分:
function start(email, adminAjaxUrl) {
jQuery.ajax({
url : adminAjaxUrl,
type : 'POST',
data : {
action : 'test_button_post',
param1: email
},
success : function( response ) {
var success = JSON.parse(response)['success'] == "true";
if (success) {
jQuery('#wpbody-content .wrap ul').before('<div class="notice notice-success"><p>' + response['message'] + '</p></div>');
} else {
jQuery('#wpbody-content .wrap ul').before('<div class="notice notice-info"><p>' + response['message'] + '</p></div>');
}
}
});
}
WP AJAX
add_action( 'wp_ajax_test_button_post', 'test_button_post' );
function test_button_post() {
if (!($_SERVER['REQUEST_METHOD'] === 'POST')) {
die();
}
$response['success'] = "true";
$response['email'] = $_REQUEST['param1'];
$response['message'] = "some message";
echo json_encode($response);
die();
}
由于我不经常使用 WordPress/WooCommerce,这对我来说似乎很困难。我不需要 AJAX POST。我想知道一种在订单列表中添加真实按钮的方法,单击该按钮后,请求转到“test_button_post()”之类的方法,在该方法中我呈现通知消息和页面自动重定向。
类似于:
按钮单击-> test_button_post 方法(充当控制器)并重定向以显示通知消息。
在 test_button_post 方法中,我需要获取参数并向外部 API 发出请求,然后显示结果。
我不知道这是否是正确的方法。
WordPress 版本:5.5
WooCommerce 版本:4.4.1
解决方案
推荐阅读
- angular - 使用 FormArray Angular 在 formGroup 中加载数据
- r - 在R中使用函数'kproto'时如何确定最佳簇数
- java - 在 Java 中为变量赋值
- php - 数据库 phpmyadmin 上的图像路径不起作用
- nlp - NLTK 句子标记器是否假定正确的标点和间距?
- java - Java匹配两个字符串之间的每两个序列字符
- php - 无法让 mbstring 在 Amazon linux 2 AMI 上工作
- java - 使用可序列化或修改的单例?
- mariadb - 使用 DROP CONSTRAINT 删除 UNIQUE 键而不是在 mariaDB 中删除索引
- asp.net - ASP.net html 表格导出到 excel