Query Strings and Woocommerce

时间:2016-06-15 作者:mikeTheDev

我有一个wordpress网站,正在使用WooCommerce出售我开发的应用程序的注册。为了简化注册过程,我希望用户能够单击应用程序中的注册按钮,直接进入我的WooCommerce签出页面,注册产品已加载到购物车中,并且在签出页面的用户名字段(我已添加)中自动输入用户名(由应用程序生成)。

到目前为止,当用户单击应用程序注册按钮时,应用程序会将其浏览器中的用户发送到如下URL:

http://www.example.com/checkout/?add-to-cart=532&username=myname
在我的function.php 文件添加到购物车时,我将重定向到签出页面,因此这将打开产品的签出页面id = 532 已在购物车中。完美的

为了公开username变量,我在functions.php 文件:

add_filter( \'query_vars\', \'add_query_vars_filter\' );
function add_query_vars_filter( $vars ){
   $vars[] = "username";
   return $vars;
}
为了从查询字符串中捕获用户名并将其输入到已创建的用户名字段中,我还将以下内容添加到functions.php 文件:

add_filter( \'woocommerce_checkout_fields\' , \'custom_override_checkout_fields\' );
function custom_override_checkout_fields( $fields ) {
    $thename = get_query_var( \'username\', \'defaultName\' );
    $fields[\'billing\'][\'billing_username\'] = array(
        \'label\'     => __($label, \'woocommerce\'),
        \'placeholder\'   => _x($placeholder, \'placeholder\', \'woocommerce\'),
        \'required\'  => true,
        \'class\'     => array(\'form-row-wide\'),
        \'clear\'     => true,
       \'default\'    => $thename
    );
 return $fields;
}
不幸的是,defaultName 在用户名字段中输入。如果我删除add-to-cart=532 从URL,然后myname 已输入。我认为问题是当结账页面打开时,username=myname 从URL中删除。看来我得用$thename = get_query_var( \'username\', \'defaultName\' ) 在打开签出页面的早期过程中(问题之一是我不完全理解这个过程),以某种方式在custom_override_checkout_fields my中的函数functions.php 文件所以问题是我如何做到这一点?

1 个回复
SO网友:mikeTheDev

我想我知道了。在我的功能中。php文件我有下面的函数,可以在产品添加到购物车时重定向到结帐页面。因此,我在那里捕获了username变量,然后将其添加到重定向的URL中:

add_filter (\'add_to_cart_redirect\', \'redirect_to_checkout\');
function redirect_to_checkout() {
    global $woocommerce;
    $checkout_url = $woocommerce->cart->get_checkout_url();
    if ( ! empty( $_REQUEST[\'username\'] ) ) {
        $thename = $_REQUEST[\'username\'];
        $checkout_url = esc_url( add_query_arg(\'username\', $thename, $checkout_url ) );
    }
    return $checkout_url;
}
奇怪的是,get\\u query\\u var(\'username\')或$wp\\u query->query\\u vars[\'username\')都不起作用。我不知道为什么。

相关推荐

将wp_Query替换为wp_User_Query

我在插件中制作了一些订阅者档案和单曲(个人资料页),其中我还包括了一个“用户单曲”模板,通过template_include. 不过,我正在尝试从插件中删除一些模板,以使其使用主题模板。我用了locate_template( \'single.php\' ) 从活动主题中选择单个模板。我没有使用全局wp_query 在本例中显示我的内容,但页面显示了基于查询默认值的循环(十篇帖子)。我想知道的是,我是否可以完全放弃默认查询,用wp_user_query 我可以将查询到的用户ID输入其中。然后我想筛选the