在我的header.php文件中,我需要动态设置正文ID,具体取决于当前使用的模板,无论有人正在查看的页面。
如果有人正在查看使用模板A的页面,则body标签应如下所示:
<body id="page1">
如果有人正在查看使用模板B的网页,则正文标记应如下所示:
<body id="page2">
在我的主题functions.php
中设置以下变量会有什么不利之处$GLOBALS['my_current_body_id'];
然后在每个模板的开头我设置以下内容:
$GLOBALS['my_current_body_id'] = '1';
或
$GLOBALS['my_current_body_id'] = '2';
依赖于我需要如何设置和构造特定页面。
然后在我的header.php文件中,我执行以下操作:
<body id="page<?php echo $GLOBALS['my_current_body_id']?>">
我想知道使用这种方法是否存在问题,我可能会忽视它。
例如,如果有两个人在同一时间点击该网站,可能会出现混乱,还是特定于查看该网页的用户的$ GLOBALS [&#39; my_current_body_id&#39;]?
感谢。
答案 0 :(得分:0)
这个解决方案怎么样:
PHP:
function body_tag() {
global $post;
$pageid = $post->ID; // Get page ID
switch($pageid) {
case '1':
$bodyid = '1';
break;
case '2':
$bodyid = '2';
break;
case '3':
$bodyid = '3';
break;
default:
$bodyid = '';
}
// Based on the page ID, set the appropriate bodyid and then return it.
return $bodyid;
}
的header.php:
<body id="page<?php echo body_tag(); ?>">
我写的代码感觉有点简单,但是...... 如果用户A和用户B正在查看同一页面,他们将看到相同的模板。 但是,如果用户A正在查看ID为4的页面而用户B正在查看ID为5的页面,那么他们将看到不同的模板。 您是否正在尝试为A / B测试制作插件?
答案 1 :(得分:0)
以下是一些方法,具体取决于所需的内容:
1)抓住&#39; post_name&#39;页面的直接父级:
<?php
$page = $wp_query->post;
$parent_name = $wpdb->get_var("SELECT post_name FROM $wpdb->posts WHERE ID = '$page->post_parent;'");
?>
并显示父网页的名称:
<body id="<?php echo $parent_name; ?>">
2)要收集 top 父级的内容,即父级&lt;&gt;子级别的顶部,我们可以修改jpepper链接中的代码:
<?php
$current_page = $post->ID;
$parent = 1;
while($parent) {
$page_query = $wpdb->get_row("SELECT post_name, post_parent FROM $wpdb->posts WHERE ID = '$current_page'");
$parent = $current_page = $page_query->post_parent;
if(!$parent)
$parent_name = $page_query->post_name;
}
?>
然后使用与上面相同的方法显示名称。 为了更好的方法,你可以简单地在functions.php中使用它一个函数,并在header.php文件中使用它。
来源:https://wordpress.org/support/topic/dynamic-id-for-ltbodygt-and-subpages