Php 如何在WooCommerce管理订单列表上创建过滤器下拉列表?
我正在尝试在WooCommerce管理订单列表上创建一个发货状态过滤器下拉列表 首先,我已将装运状态的自定义列添加到管理员订单列表中:Php 如何在WooCommerce管理订单列表上创建过滤器下拉列表?,php,wordpress,woocommerce,state,orders,Php,Wordpress,Woocommerce,State,Orders,我正在尝试在WooCommerce管理订单列表上创建一个发货状态过滤器下拉列表 首先,我已将装运状态的自定义列添加到管理员订单列表中: add_filter( 'manage_edit-shop_order_columns', 'custom_shipping_state_column', 100 ); function custom_shipping_state_column( $columns ){ $ordered_columns = array(); foreach( $columns
add_filter( 'manage_edit-shop_order_columns', 'custom_shipping_state_column', 100 );
function custom_shipping_state_column( $columns ){
$ordered_columns = array();
foreach( $columns as $key => $column ){
$ordered_columns[$key] = $column;
if( 'order_notes' == $key ){
$ordered_columns['order_state'] = __( 'State/Province', 'woocommerce');
}
}
return $ordered_columns;
}
add_action( 'manage_shop_order_posts_custom_column' , 'shipping_state_order_list_column', 10, 1 );
function shipping_state_order_list_column( $column )
{
global $post;
if ( 'order_state' === $column ) {
$order = wc_get_order( $post->ID );
echo $order->get_shipping_state();
}
}
add_filter( 'manage_edit-shop_order_columns', 'custom_shipping_state_column', 100 );
function custom_shipping_state_column( $columns ){
$sorted_columns = array();
foreach( $columns as $key => $column ){
$sorted_columns[$key] = $column;
if( 'order_notes' == $key ){
$sorted_columns['order_state'] = __( 'State/Province', 'woocommerce');
}
}
return $sorted_columns;
}
add_action( 'manage_shop_order_posts_custom_column' , 'shipping_state_order_list_column', 10, 1 );
function shipping_state_order_list_column( $column ) {
global $post, $the_order;
if ( 'order_state' === $column && $shipping_state = $the_order->get_shipping_state() ) {
echo $shipping_state;
}
}
这是我的下拉过滤器,用于装运状态:
add_action('restrict_manage_posts', 'filter_province');
function filter_province(){
global $typenow;
global $wpdb;
$table = $wpdb->prefix . 'woocommerce_shipping_zone_locations';
$sql = 'SELECT location_code FROM `'. $table . '`';
$location_state = array();
$result = $wpdb->get_results($sql);
$location_name = array(
'ABR'=>'ABR:Abra',
'AGN'=>'AGN:Agusan del Norte',
'AGS'=>'AGS:Agusan del Sur',
'AKL'=>'AKL:Aklan',
'ALB'=>'ALB:Albay',
'ANT'=>'ANT:Antique',
'APA'=>'APA:Apayao',
'AUR'=>'AUR:Aurora',
'BAS'=>'BAS:Basilan',
'BAN'=>'BAN:Bataan',
'BTN'=>'BTN:Batanes',
'BTG'=>'BTG:Batangas',
'BEN'=>'BEN:Benguet',
'BIL'=>'BIL:Bilaran',
'BOH'=>'BOH:Bohol',
'BUK'=>'BUK:Bukidnon',
'BUL'=>'BUL:Bulacan',
'CAG'=>'CAG:Cagayan',
'CAN'=>'CAN:Camarines Norte',
'CAS'=>'CAS:Camarines Sur',
'CAM'=>'CAM:Camiguin',
'CAP'=>'CAP:Capiz',
'CAT'=>'CAT:Catanduanez',
'CAV'=>'CAV:Cavite',
'CEB'=>'CEB:Cebu',
'COM'=>'COM:Compostela Valley',
'NCO'=>'NCO:Cotobato',
'DAV'=>'DAV:Davao del Norte',
'DAS'=>'DAS:Davao del Sur',
'DAC'=>'DAC:Davao Occidental',
'DAO'=>'DAO:Davao Oriental',
'DIN'=>'DIN:Dinangat Island',
'EAS'=>'EAS:Eastern Samar',
'GUI'=>'GUI:Guimaras',
'IFU'=>'IFU:Ifugao',
'ILN'=>'ILN:Ilocos Norte',
'ILS'=>'ILS:Ilocos Sur',
'ILI'=>'ILI:Iloilo',
'ISA'=>'ISA:Isabela',
'KAL'=>'KAL:Kalinga',
'LUN'=>'LUN:La Union',
'LAG'=>'LAG:Laguna',
'LAN'=>'LAN:Lanao del Norte',
'LAS'=>'LAS:Lanao del Sur',
'LEY'=>'LEY:Leyte',
'MAG'=>'MAG:Maguindanao',
'MAD'=>'MAD:Marinduque',
'MAS'=>'MAS:Masbate',
'MSC'=>'MSC:Misamis Occidental',
'MSR'=>'MSR:Misamis Oriental',
'MOU'=>'MOU:Mountain Province',
'NEC'=>'NEC:Negros Occidental',
'NER'=>'NER:Negros Oriental',
'NSA'=>'NSA:Nothern Samar',
'NUE'=>'NUE:Nueva Ecija',
'NUV'=>'NUV:Nueva Vizcaya',
'MDC'=>'MDC:Occidental Mindoro',
'MDR'=>'MDR:Oriental Mindoro',
'PLW'=>'PLW:Palawan',
'PAM'=>'PAM:Pampanga',
'PAN'=>'PAN:Pangasinan',
'QUE'=>'QUE:Quezon',
'QUI'=>'QUI:Quirino',
'RIZ'=>'RIZ:Rizal',
'ROM'=>'ROM:Romblon',
'WSA'=>'WSA:Samar',
'SAR'=>'SAR:Sarangani',
'SIQ'=>'SIQ:Siquijor',
'SOR'=>'SOR:Sorsogon',
'SCO'=>'SCO:South Cotobato',
'SLE'=>'SLE:Southern Leyte',
'SUK'=>'SUK:Sultan Kudarat',
'SLU'=>'SLU:Sulu',
'SUN'=>'SUN:Surigao del Norte',
'SUR'=>'SUR:Surigao del Sur',
'TAR'=>'TAR:Tarlac',
'TAW'=>'TAW:Tawi-Tawi',
'ZWB'=>'ZWB:Zambales',
'ZAN'=>'ZAN:Zamboanga del Norte',
'ZAS'=>'ZAS:Zamboanga del Sur',
'ZSI'=>'ZSI:Zamboanga Sibugay',
'00'=>'00:Metro Manila'
);
$getCount = count($location_name);
$location = array_values($location_name);
// if post type is shop_order
if ($typenow=='shop_order') {
//check if our select has been sent and if so, is it set to "Currently Due"
if (isset($_GET["get_province"])){
$get_province = $_GET["get_province"];
$selected = $get_province;
} else {
$selected = "";
}
echo "<select id='get_province' name='get_province'>";
echo "<option value='' ".selected("", $selected )." >".__( 'State/Province', 'woocommerce' )."</option>";
foreach($result as $res) {
$data = explode(':',$res->location_code);
for($i=0;$i<$getCount;$i++){
$location_state = explode(':',$location[$i]);
if($location_state[0] == $data[1]){
echo "<option value= ".$data[1]." ".selected($data[1], $selected ).">".$location_state[1]."</option>";
}
}
}
echo "</select>";
}
}
add_action('restrict_manage_posts','filter_province');
函数筛选器_省(){
全球$typenow;
全球$wpdb;
$table=$wpdb->prefix.'woocommerce\u shipping\u zone\u locations';
$sql='从`.$table'.'中选择位置\代码''.';
$location_state=array();
$result=$wpdb->get_results($sql);
$location\u name=数组(
“ABR”=>“ABR:Abra”,
“AGN”=>“AGN:Agusan del Norte”,
'AGS'=>'AGS:Agusan del Sur',
‘AKL’=>‘AKL:Aklan’,
'ALB'=>'ALB:Albay',
“蚂蚁”=>“蚂蚁:古董”,
‘APA’=>‘APA:Apayao’,
“极光”=>“极光:极光”,
'BAS'=>'BAS:Basilan',
‘BAN’=>‘BAN:Bataan’,
'BTN'=>'BTN:Batanes',
'BTG'=>'BTG:Batangas',
“本”=>“本:本格”,
“比尔”=>“比尔:比拉兰”,
'波黑'=>'波黑:波黑',
‘BUK’=>‘BUK:Bukidnon’,
‘BUL’=>‘BUL:Bulacan’,
'CAG'=>'CAG:Cagayan',
“CAN”=>“CAN:Camarines Norte”,
“CAS”=>“CAS:Camarines Sur”,
'凸轮'=>'凸轮:凸轮',
'CAP'=>'CAP:Capiz',
“CAT”=>“CAT:Catanduanez”,
'CAV'=>'CAV:Cavite',
“行政首长协调会”=>“行政首长协调会:宿务”,
“COM”=>“COM:Compostela Valley”,
‘NCO’=>‘NCO:Cotobato’,
“DAV”=>“DAV:Davao del Norte”,
'DAS'=>'DAS:Davao del Sur',
‘DAC’=>‘DAC:Davao Occidental’,
“道”=>“道:达沃东方”,
‘丁’=>‘丁:迪南加特岛’,
'EAS'=>'east Samar',
'GUI'=>'GUI:Guimaras',
“IFU”=>“IFU:Ifugao”,
'ILN'=>'ILN:Ilocos Norte',
‘ILS’=>‘ILS:Ilocos Sur’,
'ILI'=>'ILI:Iloilo',
'ISA'=>'ISA:Isabela',
‘KAL’=>‘KAL:Kalinga’,
'LUN'=>'LUN:La Union',
'LAG'=>'LAG:Laguna',
“LAN”=>“LAN:lanaodel Norte”,
“LAS”=>“LAS:Lanao del Sur”,
“LEY”=>“LEY:Leyte”,
'MAG'=>'MAG:Maguindanao',
“MAD”=>“MAD:Marinduque”,
'MAS'=>'MAS:Masbate',
'MSC'=>'MSC:Misamis Occidental',
'MSR'=>'MSR:Misamis Oriental',
“MOU”=>“MOU:山地省”,
“NEC”=>“NEC:西方黑人”,
“内尔”=>“内尔:东方黑人”,
“NSA”=>“NSA:北撒马尔”,
'NUE'=>'NUE:Nueva Ecija',
'NUV'=>'NUV:Nueva Vizcaya',
“MDC”=>“MDC:Occidental Mindoro”,
“MDR”=>“MDR:东方民都洛”,
“PLW”=>“PLW:Palawan”,
“PAM”=>“PAM:Pampanga”,
“PAN”=>“PAN:Pangasinan”,
'QUE'=>'QUE:Quezon',
“QUI”=>“QUI:Quirino”,
'RIZ'=>'RIZ:Rizal',
“ROM”=>“ROM:Romblon”,
'WSA'=>'WSA:Samar',
“SAR”=>“SAR:Sarangani”,
‘SIQ’=>‘SIQ:Siquijor’,
‘SOR’=>‘SOR:Sorsogon’,
‘上海合作组织’=>‘上海合作组织:南哥托巴岛’,
'SLE'=>'SLE:Southern Leyte',
“苏克”=>“苏克:苏丹库达拉特”,
‘SLU’=>‘SLU:Sulu’,
“SUN”=>“SUN:Surigao del Norte”,
'SUR'=>'SUR:Surigao del SUR',
'TAR'=>'TAR:Tarlac',
‘TAW’=>‘TAW:Tawi-Tawi’,
‘ZWB’=>‘ZWB:Zambales’,
“赞”=>“赞:北方三宝颜”,
'ZAS'=>'ZAS:Zaboanga del Sur',
'ZSI'=>'ZSI:Zamboanga Sibugay',
'00'=>'00:马尼拉大都市'
);
$getCount=count($location\u name);
$location=array\u值($location\u name);
//如果邮政类型为车间订单
如果($typenow=='shop\u order'){
//检查我们的选择是否已发送,如果已发送,是否设置为“当前到期”
如果(isset($\u GET[“GET\u province”])){
$get\U PROVICE=$\U get[“get\U PROVICE”];
$selected=$get_省;
}否则{
$selected=“”;
}
回声“;
echo.“u uuu('State/Province','woocommerce');
foreach(结果为$res){
$data=explode(“:”,$res->location\u code);
对于($i=0;$i),您的代码中存在一些错误、复杂性和遗漏
以下内容将根据管理订单列表上的装运状态位置(基于允许的装运设置国家/地区)显示功能下拉过滤器:
代码放在活动子主题(或活动主题)的functions.php文件中。已测试并运行
相关答案:这是否回答了您的问题?您好,我使用了该代码,但它不起作用。我不知道为什么,但您可以解释一下,一旦我选择了状态并提交到过滤器按钮,如何处理。您好,非常感谢,现在它工作得非常好。请阅读您的代码并precisely@AlexanderDeMesa提醒:当您使用existin中的某些代码时g答案线索,如果有用,请尝试回答。如果你根据现有答案代码提问,请始终添加参考(链接)对于你的问题。如果有人用一个很好的工作答案回答了你的一个问题,不要忘记接受它,甚至对它进行投票。@AlexanderDeMesa我刚刚更新了我的代码,我在调试中使用了一些自定义项,我已经删除了:print\u pr($country\u state);
…因此也将其删除,因为这将引发错误。Hello@LoicTheAztec感谢您提供的信息,很抱歉这是我第一次在stackoverflow上发布。好的,我将按照您的建议:)
add_filter( 'manage_edit-shop_order_columns', 'custom_shipping_state_column', 100 );
function custom_shipping_state_column( $columns ){
$sorted_columns = array();
foreach( $columns as $key => $column ){
$sorted_columns[$key] = $column;
if( 'order_notes' == $key ){
$sorted_columns['order_state'] = __( 'State/Province', 'woocommerce');
}
}
return $sorted_columns;
}
add_action( 'manage_shop_order_posts_custom_column' , 'shipping_state_order_list_column', 10, 1 );
function shipping_state_order_list_column( $column ) {
global $post, $the_order;
if ( 'order_state' === $column && $shipping_state = $the_order->get_shipping_state() ) {
echo $shipping_state;
}
}