WordPress主題制作進階#8頁面味抖,自定義模板和子導航

定制頁面模板

現(xiàn)在我們訪問“關于”頁面一疯,可以看到它的格式就像一個帖子,這不是我們想要的炬搭。我們只希望頁面有標題蜈漓,我們不想要元數(shù)據(jù),閱讀更多宫盔,以及類似的東西融虽。 所以為了改變這一切,我們須要創(chuàng)建一個新文件并將其保存為page.php灼芭。
我們將index文件中的代碼復制有额,粘貼到page文件中,然后修改一些內容彼绷,用下面的代碼覆蓋while內部的 get_template_part()

<article class="page">
    <h2><?php the_title(); ?></h2>
    <?php the_content(); ?>
</article>

我們到前端刷新巍佑,會發(fā)現(xiàn)服務頁和關于頁使用了相同的格式;接下來將學習如何為某些頁面創(chuàng)建單獨的模板寄悯。
我們將新建一個文件命名為page-about.php萤衰,將page文件中的代碼復制,粘貼到新文件中猜旬,然后在h2標題行下方添加一行電話號碼脆栋,如下:

<article class="page">
    <h2><?php the_title(); ?></h2>
    <div class="well">Company Phone: 555-555-5555</div>
    <?php the_content(); ?>
</article> 

保存然后回到前端刷新頁面,現(xiàn)在應該只有關于頁發(fā)生變化洒擦。

我們成功的定制了單個頁面椿争,單這不是最好的方法,當你想在某些頁面上擁有特定的樣式或內容時秘遏,更好的辦法是使用模板丘薛,我們要擺脫頁面文件。現(xiàn)在我們刪除page-about.php文件邦危,然后創(chuàng)建一個模板洋侨。

創(chuàng)建一個新文件并將其保存為company-template.php舍扰。 我們將復制page.php文件中的內容,并將其粘貼到companytemplate.php文件中希坚,然后在其頂部添加聲明注釋边苹,注意這個注釋要放在php標簽中;然后在the_title()下方裁僧,輸入電話號碼个束,代碼如下:

<?php
/*
    Template Name: Company Layout
*/
?>

<?php get_header(); ?>

    <div class="container content">
        
        <div class="main block">
        <?php if(have_posts()) : ?>
            <?php while(have_posts()) : the_post(); ?>
            <article class="page">
                <h2><?php the_title(); ?></h2>
                <?php the_content(); ?>
                <p class="phone">1-800-555-5555</p> 
            </article> 

在給其加點樣式:

.phone {
    background: #f4f4f4;
    border: 1px solid #ccc;
    padding: 8px;
    font-weight: bold;
} 

保存代碼,然后我們進入后臺聊疲,頁面->關于頁茬底,重新編輯它,在右邊找到模板获洲,選擇Company Layout阱表,點擊更新。

模板

回到前端刷新

號碼出現(xiàn)了

我們跳轉到服務頁贡珊,不會看到號碼最爬; 如果你希望它出現(xiàn)在服務頁,只需進入“服務”頁面并選擇“Company-Layout”门岔, 電話號碼就會出現(xiàn)爱致。

創(chuàng)建子導航

接下來我們學習如何創(chuàng)建子導航菜單,前面我們?yōu)?strong>關于頁創(chuàng)建了兩個子頁面:團隊FAQ寒随,現(xiàn)在我們讓關于頁的兩個子頁面顯示出來糠悯,這個方法適合任何具有子項的頁面。
1妻往、我們先到后臺的關于頁中移除Company—Layout模式逢防,讓頁面不顯示電話號碼
2、然后進入page.php中蒲讯,在article標簽下面添加 php wp_list_pages()忘朝,代碼如下:

<article class="page">
    <?php wp_list_pages(); ?>
    <h2><?php the_title(); ?></h2>
    <p class="phone">1-800-555-5555</p>
    <?php the_content(); ?>
</article> 

保存代碼,讓我們到前端頁面看看發(fā)生了什么:

頁面列表

可以看到我們在WordPress網(wǎng)站上的所有頁面都被列出來了判帮,但我們只想獲取“關于”頁面及其子頁面局嘁,所以我們再轉到page.php文件,就在wp_list_pages()之上添加一些代碼晦墙,

<article class="page">
<?php
    $args = array(
        'child_of' => get_top_parent(),
         'title_li' => ''
    ); 
?>
<?php wp_list_pages($args); ?> 

如果我們刷新頁面悦昵,我們將得到一個錯誤,因為沒有名為get_top_parent()的函數(shù)晌畅。 讓我們進入functions.php并在最下面但指,創(chuàng)建一個名為get_top_parent()的函數(shù)。代碼如下

function get_top_parent(){
    global $post;
    if($post->post_parent){
        $ancestors = get_post_ancestors($post->ID);
        return $ancestors[0];
    } 
    return $post->ID;
}

保存代碼,刷新頁面:

子頁面出現(xiàn)

關于頁的子菜單出現(xiàn)了棋凳,我們回到page.php并在article標簽內創(chuàng)建一個ul標簽拦坠。 在ul標簽上方,創(chuàng)建一個nav標簽剩岳,并為其提供一個nav和sub-nav類贞滨。 現(xiàn)在在ul標簽下,我將放置一個span標簽拍棕,并為其提供一個父級鏈接晓铆。 在它里面,我們將放置一個a標簽绰播,它將轉到<骄噪?php echo get_the_permalink();?>蠢箩。 給它傳遞get_top_parent()函數(shù)腰池。 然后,對于鏈接文本我們會說<忙芒?php echo the_title();?>讳侨,代碼如下:

<nav class="nav sub-nav">
    <ul>
    <span class="parent-link">
        <a href="<?php echo get_the_permalink(get_top_parent()); ?>">
            <?php echo get_the_title(get_top_parent()); ?>
        </a>
    </span>
    <?php
        $args = array(
            'child_of' =>get_top_parent(), 
            'title_li' => ''
            );
     ?>
    <?php wp_list_pages($args); ?>
    </ul>
</nav>

現(xiàn)在保存代碼呵萨,刷新頁面看一下

橫排

如果我們轉到服務頁面,即使沒有子鏈接跨跨,它仍將具有此功能潮峦。 因此,我們將在functions.php文件中創(chuàng)建另一個短函數(shù)并調用page_is_parent勇婴。 然后忱嘹,我們創(chuàng)建全局 post并將get_pages()賦值給 pages,在這里耕渴,我們將 'child_of='.$post->ID 作為參數(shù)傳遞給get_pages()拘悦。然后返回我們想要的頁數(shù),我們會計算返回的頁數(shù)橱脸,如果頁數(shù)大于零础米,那么我們就知道它是父級:

function page_is_parent(){
    global $post;
    
    $pages = get_pages('child_of='.$post->ID);
    return count($pages);
} 

我們回到page.php并在<nav>標簽的正上方,我們將放置一個if語句添诉,它將在nav標簽下面結束屁桑。 我們將看看它是否是父頁面_is_parent(),或者如果有任何子項$ post-> post_parent> 0栏赴,那么我們將執(zhí)行以下操作:

<?php if(page_is_parent() || $post->post_parent > 0): ?> 
<nav class="nav sub-nav"> 
蘑斧。。。竖瘾。沟突。。
</nav>
<?php endif; ?> 

保存代碼准浴,然后返回服務頁面刷新事扭。 我們可以看到菜單現(xiàn)在已經(jīng)消失了,但是如果我們去關于頁乐横,菜單仍然存在求橄,因為它有子頁面。

現(xiàn)在我們需要的功能已經(jīng)正常工作葡公,接下來我們?yōu)樽硬藛翁砑右恍邮焦夼屗每矗?/p>

.sub-nav {
    margin-top: 10px;
    float: right;
    width: 300px;
}
.sub-nav ul {
    float: right;
}
.sub-nav .parent-link {
    font-weight: bold;
    color: #000;
    float: left;
    margin-right: 20px;
    padding-right: 20px;
    border-right: 1px solid #009acd;
}
.sub-nav .parent-link a {
    font-weight: bold;
    color: #000;
}
.sub-nav .current_page_item {
    font-weight: bold;
}

最后我們清除一下浮動,轉到page.php文件中催什,在nav結束標簽下方添加< div class="clr" >涵亏,然后在樣式表中添加以下樣式:

.clr{
    clear:both;
}

保存回到前端頁面刷新:

完成子導航菜單

在下一節(jié)中,我們將介紹小工具(widgets)蒲凶。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末气筋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子旋圆,更是在濱河造成了極大的恐慌宠默,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灵巧,死亡現(xiàn)場離奇詭異搀矫,居然都是意外死亡,警方通過查閱死者的電腦和手機刻肄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門瓤球,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人敏弃,你說我怎么就攤上這事卦羡。” “怎么了麦到?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵虹茶,是天一觀的道長。 經(jīng)常有香客問我隅要,道長蝴罪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任步清,我火速辦了婚禮要门,結果婚禮上虏肾,老公的妹妹穿的比我還像新娘。我一直安慰自己欢搜,他們只是感情好封豪,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著炒瘟,像睡著了一般吹埠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上疮装,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天缘琅,我揣著相機與錄音,去河邊找鬼廓推。 笑死刷袍,一個胖子當著我的面吹牛,可吹牛的內容都是我干的樊展。 我是一名探鬼主播呻纹,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼专缠!你這毒婦竟也來了雷酪?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤涝婉,失蹤者是張志新(化名)和其女友劉穎哥力,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嘁圈,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年蟀淮,在試婚紗的時候發(fā)現(xiàn)自己被綠了最住。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡怠惶,死狀恐怖涨缚,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情策治,我是刑警寧澤脓魏,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站通惫,受9級特大地震影響茂翔,放射性物質發(fā)生泄漏。R本人自食惡果不足惜履腋,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一珊燎、第九天 我趴在偏房一處隱蔽的房頂上張望惭嚣。 院中可真熱鬧,春花似錦悔政、人聲如沸晚吞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽槽地。三九已至,卻和暖如春芦瘾,著一層夾襖步出監(jiān)牢的瞬間捌蚊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工旅急, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留逢勾,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓藐吮,卻偏偏與公主長得像溺拱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子谣辞,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內容

  • 1迫摔、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,981評論 3 119
  • 27日下午最新消息躯嫉,從省十二屆人大常委會第二十四次會議上傳來消息纱烘,河南一般公共預算新增22.65億元,其中包含鄭州...
    大河之南i閱讀 426評論 0 0
  • 你說祈餐, 離家好久了擂啥, 這里的飯菜,少些火候帆阳, 冬日里的風哺壶,也不溫柔; 你說蜒谤, 時光總似箭山宾, 流水似流年, 新年又趕...
    夏嗶哩閱讀 301評論 2 7
  • 理想與現(xiàn)實的碰撞鳍徽。 這是我看的第一部日本動漫(奧特曼之類不算)资锰,之前沒看過純粹是不喜歡聽日語〗准溃看過之后更感覺國產(chǎn)動...
    AmNobody閱讀 296評論 0 0
  • Moment 總有一些瞬間想與你分享
    世家珠寶小客服閱讀 136評論 0 0