[英]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.