插件可以根据IF条件重定向产品页面吗?

时间:2020-05-22 作者:TVBZ

我是WordPress的新手,刚刚制作了第一个插件,为WooCommerce添加了一些自定义字段。根据这些自定义字段,我想重定向我的产品页面。

活动主题具有单个产品的模板覆盖。php。我在那里添加了一些条件逻辑,并使用wp_redirect() 让它发挥作用。这很好用。

但当主题更新时,这种条件逻辑将丢失。是否可以使用插件覆盖模板文件,但前提是满足条件?

类似于:

$redirectPage = true;
if ($redirectPage) { // don\'t use template, redirect to some page (this part works)
   $targetUrl = ...;
   wp_redirect($targetUrl, 301);
   exit();
} else {
   // now we want to keep normal behavior
   // use excisting single-product.php file from theme
   // how to do it?
}
如果可能的话,有什么见解吗?有人能给我指出正确的方向吗?我知道我可以利用一个子主题,但我更愿意处理插件中的所有内容。谢谢

1 个回复
SO网友:TVBZ

可以再读几遍之后,我找到了一个有效的解决办法。

首先,我们让插件侦听页面类型是否为产品页面。如果这是真的,那么可以实现条件逻辑。通过这种方式,它可以进行更新,并且可以在任何其他模板上使用。太棒了

以下是我在插件中添加的代码(基本上缩小了一些):

add_action( \'wp\', \'redirect_single_product_page\' );

function redirect_single_product_page() {
    if (is_product()) { // if the page is a single product page
        $redirectPage = true; // some dummy value for conditional logic
        if ($redirectPage) {
            $target_url = ...; // construct a target url
            wp_redirect($target_url, 301); // permanent redirect
            exit();
        }
    }
}
如果页面不符合条件逻辑,通常会应用预期的行为。