1. 程式人生 > >從0到1製作WordPress主題#9新增functions.php和縮圖

從0到1製作WordPress主題#9新增functions.php和縮圖

現在我們轉到下圖顯示的表單新增帖子,會發現你看不到在其他WordPress主題或其他WordPress網站上看到過的特色圖片框。 原因是我們沒有包含該功能。 後臺表單 1、進入我們的主題資料夾simple,我們將建立一個叫functions.php的檔案1,用於放置一些鉤子和一些自定義功能,通過它可以掛鉤某些程式碼,註冊一些widgets,動態的實現一些基礎功能。 2、在functions.php中新增以下程式碼並儲存:

<?php
function simple_theme_setup(){
    // Featured Image Support
    add_theme_support('post-thumbnails'
); } add_action('after_setup_theme', 'simple_theme_setup');

回到寫文章的頁面重新整理一下,我們會看到右下角已經多了一個特色圖片的功能: 特色圖片 我們來看看剛剛發生了什麼:

  • 首先建立了一個叫simple_theme_setup的自定義函式
  • 註釋該函式是用來新增特色圖片的
  • 然後呼叫了一個名為add_theme_support的函式,並傳入一個叫post-thumbnails的引數(現在這個函式並不會執行)
  • 使用add_action和某些鉤子來執行這個函式(這裡add_action的第一個引數是名叫after_setup_theme的鉤子,第二個引數是我們自定義的需要執行的函式)

3、現在,為了方便學習,我將之前文章中插入的圖片刪除,然後在特色圖片中選擇一個影象並將其儲存,然後單擊更新。 現在我們轉到前端重新整理頁面,我們並沒有看到它,因為我們沒有將它新增到我們的index.php檔案中。 4、開啟index.php,在meta下面新增程式碼,如下所示:(不是一定要在index頁中顯示影象,可以根據需要在單頁中顯示它,也可以讓它在兩個頁面都顯示)

<div class="meta">
	Created By <?php the_author(); ?> on <?php the_time('F j, Y g:i a'); ?>
</
div
>
<?php if(has_post_thumbnail()) : ?> <div class="post-thumbnail"> <?php the_post_thumbnail(); ?> </div> <?php endif; ?>

儲存程式碼,返回前端頁面重新整理,會看到meta元資料下方多了一張圖片: 縮圖出現了 5、現在,圖片看起來有點偏離,因為它在整個頁面上沒有達到100%寬度。開啟樣式表在CSS中新增100%的寬度。

.post-thumbnail img{
	width:100%;
	height:auto;
}

重新整理前端頁面,我知道現在圖片真的很大,但後面我們會增加一個側邊欄,它會縮小一些。

6、現在我想讓單個帖子頁面也顯示圖片,我們從index.php中複製程式碼貼上到single.php中的meta下面,儲存並重新整理前端頁面就能看到一樣的圖片了。

7、在index頁面上的帖子中,它顯示了整個內容,但我們只想顯示一部分內容。在index.php中,我們用the_excerpt替換the_content,程式碼如下:

<?php the_excerpt(); ?> 

它將內容削減到約55字。 你也可以自定義它,並根據需要加長或縮減,這實際上非常簡單: 找到functions.php檔案,在之前的程式碼下方建立一個自定義函式,如下所示:

// Excerpt Length
function set_excerpt_length(){
	return 33;
}

add_filter('excerpt_length', 'set_excerpt_length'); 

此時文章內容就被削減到33個字了;這次我們使用的是add_filter ,其通常用於改變某些東西;而之前使用的 add_action 通常用來新增東西或創造東西。 返回前端重新載入頁面,我們可以看到它只有33個字長。 33個字長度 現在我們已經設定好了index頁面,除了評論之外,我們設定了單個帖子頁面,我們稍後會做評論的設定。 但是,在下一節中,我們將學習如何建立選單並開始處理頁面和帖子。

  1. function.php是為了寫PHP程式碼而存在的。把大量的PHP程式碼和模板HTML混合在一起,並不是一個好的方法,會導致模板難以維護,function.php模板就是為了解決這個問題而存在的。在初始化主題前,先會執行function.php的程式碼。就像主題專用的外掛那樣,可以使用各種鉤子,進行自定義操作。 ↩︎