-1

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

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,因为如果我取出 else,它只会加载Javado_this.php检查是否返回 true 或 false,如果我将 else 留在里面,它会破坏网站:(

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

提前致谢

4

1 回答 1

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'; ?>';
}

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

于 2013-08-21T14:31:33.703 回答