我正在努力优化我的功能。php文件,因为我有一个Woocommerce网站,该网站对主题进行了大量定制。目前,我的函数如下所示:
add_action(\'wp_footer\', \'enqueue_product_modals\');
function enqueue_product_modals() {
global $product; //Accessing the Global
$product_id = $product->get_id();
if (is_product()) {
//Standard Modal:
require_once \'modal-product.php\';
if (has_term(\'guitar-pickups\', \'product_cat\', $product_id)) {
include_once \'modal-polarity.php\';
};
if (has_term(\'mini-humbuckers\', \'product_cat\', $product_id)) {
include_once \'modal-minihum.php\';
};
}
}
add_action(\'woocommerce_after_single_product_summary\', function () {
global $product; //Accessing the Global Again
$name = $product->get_name();
if (have_comments()) {
echo \'<p class="reviews-tagline">Trying to leave a review for our \' . $name . \'? <a class="expand" data-toggle="collapse" data-target="#review_form_wrapper" >Leave one here.</a></p>\';
}
}, 50);
etc.
我理解访问
global $product
多次是不好的做法。因此,我开始通过声明
global $product
在我的功能顶部。php文件(就像我在JS中一样)并将其传递给每个单独的函数,如下所示:
global $product;
add_action(\'wp_footer\', \'enqueue_product_modals\');
function enqueue_product_modals($product) {
$product_id = $product->get_id();
if (is_product()) {
// code here...
}
}
add_action(\'woocommerce_after_single_product_summary\', function ($product) {
$name = $product->get_name();
if (have_comments()) {
//code here
}, 50);
问题是,现在所有函数都被破坏了
var_dump($product)
在每个函数$product中都有一个空字符串。我现在肯定我不知道我在做什么。是否有人可以提供任何帮助,以正确的方式访问每个功能中的$product global。。。还是更好的方法?
编辑:我还尝试通过$post
对象,这样重写函数,但它仍然是一个空字符串:
add_action(\'wp_footer\', \'enqueue_product_modals\');
function enqueue_product_modals($post) {
if (is_product()) {
$product = wc_get_product($post->ID); // hoping to use this
var_dump($post); //Still empty String
}
}