有条件的php包含在wp中使用媒体查询和javascript

时间:2013-08-21 14:29:06

标签: php javascript wordpress

我可能会说这一切都错了,但是这里......我试图在 WP 主题文件中使用 JavaScript 来执行条件 PHP include基于 CSS 媒体查询和伪元素。

CSS 中,我使用媒体查询检查纵向模式下的移动设备,在此查询下使用:after属性向主体添加隐藏的content="mobile_portrait"元素。

然后我想继续浏览主页模板并使用 JavaScript

var size = window.getComputedStyle(document.body,':after').getPropertyValue('content');
if (size == 'mobile_portrait') {
    <?php
       add_action( 'genesis_after_header', 'do_this' );
       function do_this() {
         require(CHILD_DIR.'/do_this.php');
         }
    ?>
 }
else {
    <?php
       add_action( 'genesis_after_header', 'do_the_other' );
       function do_the_other() {
         require(CHILD_DIR.'/do_the_other.php');
         }
    ?> 

}

似乎WP正在跳过 JavaScript 并解析 PHP ,因为如果我取出其他内容它只会加载do_this.php是否 Java 检查返回true或false,如果我将else留在其中,它会破坏网站:(

关于我做错什么的想法?或者更好的方法来加载基于媒体查询的 PHP 文件?

提前致谢

1 个答案:

答案 0 :(得分:1)

PHP和Javascript不能像你想要的那样互换使用。

PHP是渲染器,它正在构建输出(构建Javascript)

PHP将被运行,无论它们放在Javascript条件中的哪个位置,因为Javascript条件与它们的执行无关。

==

现在添加一个解决方案:

也许使用像您设置的javascript只需重定向到您想要为给定视图运行的phpfile:

var size = window.getComputedStyle(document.body,':after').getPropertyValue('content');
if (size == 'mobile_portrait') {
    window.location = '<?= CHILD_DIR.'/do_this.php'; ?>';
}
else {
    window.location = '<?= CHILD_DIR.'/do_the_other.php'; ?>';
}

所以有不同的页面可以根据媒体查询进行必要的包含