[英]Display header based on user role and page (Wordpress)
我使用 Elementor 创建了多个不同的标题作为模板。
我想根据用户角色(登录/注销)和页面显示所有不同的标题。
我正在寻找一个可以轻松自定义的代码片段,以便为不同的场景分配所有不同的标题。
有人可以创建一个示例代码片段,它将:
这样,人们可以轻松地复制代码并对其进行自定义以满足他们的需求。
编辑
有两个地方可以创建模板。
第一个由 Elementor 添加,位于Admin > Templates > Saved Templates中。 在这里,我可以创建部分或页面模板(截图)。
第二个是由我的主题 OceanWP 添加的,位于Admin > Theme Panel > My Library 。 在这里我只能创建一种类型的模板。 此处创建的模板稍后可以作为自定义页眉或页脚分配给单个页面或整个网站。
在这两个地方创建的模板是否被视为模板部分? 我选择创建 header 模板的地方有什么不同吗?
这是我创建的 header 模板的列表:
模板标题 | 帖子编号 | |
---|---|---|
一个 | 主 Header (登出) | 5448 |
乙 | 主Header(已登录) | 6714 |
C | 结帐 Header(注销) | 6724 |
D | 结帐 Header(登录) | 3960 |
这是我希望拥有与整个网站不同的 header 的页面:
页面标题 | 帖子编号 | 蛞蝓 | |
---|---|---|---|
X | 查看 | 18 | 查看 |
像这样的东西应该工作:
<?php
if (! is_user_logged_in() && ! is_page(array( 'page-x-slug', 'page-y-slug' ))){
// display header A
}
if (is_user_logged_in() && ! is_page(array( 'page-x-slug', 'page-y-slug' ))){
// display header B
}
if (! is_user_logged_in() && is_page(array( 'page-x-slug', 'page-y-slug' ))){
// display header C
}
if (is_user_logged_in() && is_page(array( 'page-x-slug', 'page-y-slug' ))){
// display header D
}
?>
以下提供与前一个答案相同的结果,但被缩小并且重复性较低。
<?php
if ( is_page( [ 'page-x', 'page-y' ] ) )
if ( is_user_logged_in() )
get_header( 'B' ); //... header-B.php
else
get_header( 'A' ); //... header-A.php
else
if ( is_user_logged_in() )
get_header( 'D' ); //... header-D.php
else
get_header( 'C' ); //... header-C.php
?>
我猜你所说的...
部分模板
...实际上是模板的一部分。 而不是使用get_header( string $name );
然后,您将使用get_template_part( string $slug, string $name = null );
.
$slug
和$name
可以是您选择的任何内容。
例如, section-A.php
将是get_template_part( 'section', 'A' );
.
<?php
//...
if ( is_user_logged_in() )
get_template_part( 'section', 'B' ); //... section-B.php
else
get_template_part( 'section', 'A' ); //... section-A.php
?>
关于指定页面和模板。 is_page()
可以采用 ID、slug 或标题。
is_page(int|string|int[]|string[] $page = '' )
范围 | 描述 |
---|---|
$page |
(int|string|int[]|string[]) (可选)要检查的页面 ID、标题、slug 或数组。 默认值: '' |
但你也可以使用其他is_
像is_search()
或is_archives()
, is_404()
...等。
这是完整列表@ https://codex.wordpress.org/Conditional_Tags
如果要添加多个条件语句,可以在中间添加elseif
语句。
<?php
if ( is_page( [ 'page-x', 'page-y' ] ) )
//...
elseif ( is_search() || is_archive() )
//...
else
//...
?>
如果您想更好地了解 PHP 运算符,它们是如何构建条件语句的,请查看 @ https://www.w3schools.com/php/php_operators.asp
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.