Form-check out.php WooCommerce中的$check out从何而来?

时间:2020-07-01 作者:Questo

我试图弄清楚如何在WordPress中的文件之间传递变量,在表单签出中遇到了这个小代码。php woocommerce。

do_action( \'woocommerce_before_checkout_form\', $checkout );

// If checkout registration is disabled and not logged in, the user cannot checkout.
if ( ! $checkout->is_registration_enabled() && $checkout->is_registration_required() && ! is_user_logged_in() ) {
    echo esc_html( apply_filters( \'woocommerce_checkout_must_be_logged_in_message\', __( \'You must be logged in to checkout.\', \'woocommerce\' ) ) );
    return;
}
变量$checkout没有在文件中定义,似乎来自不同的文件,但我找不到任何将变量跟踪到其原点的include。

只是想知道如何在不包含或不需要的情况下跨文件传递变量,不确定这是wordpress特定的还是与PHP相关的,但如果有人能提供帮助,我将非常感激。

提前谢谢!!

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

它由包含模板的代码设置,并且在包含文件时在范围内-从include documentation:

包含文件时,它包含的代码将继承包含文件所在行的变量范围。从那时起,调用文件中该行可用的任何变量都将在被调用文件中可用。

表单签出不是单独使用的,它包含在another class 使用wc\\u get\\u模板:

wc_get_template( \'checkout/form-checkout.php\', array( \'checkout\' => $checkout ) );
这个参数变成了$checkout:wc_get_template 呼叫extract 在该数组上执行实际include以在范围内生成$checkout之前。

相关推荐