WooCommerce为餐厅中放置的每一张桌子提供不同的URL

时间:2020-08-06 作者:Aetzad Asghar

我的公司正在与不同的餐厅合作,将他们的菜单数字化,这样人们就不会在这场新冠肺炎大流行中触摸菜单卡,因此餐厅的每一张桌子上都会放置一个独特的qr,当客户扫描它时,菜单会打开,他可以从那里订购,我面临的问题是如何设置所有与桌号链接的唯一URL,以及如何在woocommerce的仪表盘上显示桌号,以便餐厅知道订单的桌号。谢谢你,雷加·萨特扎德

2 个回复
最合适的回答,由SO网友:Ben 整理而成

我目前没有一个WooCommerce来测试这个,所以它非常粗糙,准备就绪,甚至可能不起作用。。。但是,我认为逻辑是相当合理的。试一试:

// Store session value for table number
add_action(\'init\', \'store_table_number\');
function store_table_number() {
    if( $_GET[\'dining\'] ) {
        global $tableNo;
        $tableNo = array( \'number\' => $_GET[\'dining\'] );
    }
}

// Add Table Number field to checkout
add_filter( \'woocommerce_checkout_fields\' , \'table_number_checkout\' );
function table_number_checkout( $fields ) {
    $fields[\'order\'][\'table_number\'] = array(
        \'label\'       => __(\'Table Number\', \'woocommerce\'),
        \'placeholder\' => _x(\'Table\', \'placeholder\', \'woocommerce\'),
        \'value\'       => $GLOBALS[\'tableNo\'][\'number\'],
        \'required\'    => false,
        \'class\'       => array(\'form-row-wide\'),
        \'clear\'       => true
    );

    return $fields;
}

// Output table number in WP Admin panel
add_action( \'woocommerce_admin_order_data_after_shipping_address\', \'table_number_admin\', 10, 1 );
function table_number_admin($order){
    echo \'<p><strong>\'.__(\'Table Number\').\':</strong> \' . get_post_meta( $order->get_id(), \'_table_number\', true ) . \'</p>\';
}
以上内容将添加到functions.php 文件第一个函数启动会话并存储URL变量的值。第二个将表号字段添加到WooCommerce签出页面,引用自here. 最后,第三个函数在WordPress管理员的订单屏幕中添加一个表号字段,这最终将允许您配置电子邮件输出。再次引用上述链接。

SO网友:Ben

根据您所描述的,您是否可以在url字符串中传入一个变量,然后将其存储在来宾会话中?您的URL可能如下所示:

https://www.therestaurant.com/menu?dining=22

当然,您可以使用PHP get检索该表号:

$tableNumber = $_GET[\'dining\'];

这将使您能够直接将用户带到您网站上的订单/菜单页面,同时仍然存储他们的表格,以便稍后随表单提交一起发送到厨房,并让您轻松地动态添加/删除/重新标记表格。

希望有帮助。本。

相关推荐

更改wp-admin/plugins.php上统计的插件数量

我已成功地使用从插件页面隐藏我的插件$wp_list_table 然而,顶部的分页仍然将插件列为“所有(3)”等。我成功地改变了$wp_list_table 的数组_pagination_args = total_items.但它仍然在页面顶部呈现插件-“全部(3)”。有什么办法可以解决这个问题吗?我找到了WP_Plugins_List_Table::prepare_items()具有全局$totals 变量,但我不确定我将如何改变这一点,在这个函数中$totals = array(); fore