隨著 WordPress 的功能越來越強大,我們幾乎可以使用 WordPress 來做任何想做的事 (似乎有點誇張了⊙﹏⊙b 汗) 。

很多時候,也許我們並不需要在一篇文章中呼叫另一篇文章或單頁面的內容 (至少大多數人不需要這樣做);但是這並不是讓我們放棄 WordPress 強大功能的理由。

我們可以拿 WordPress 來開發一個電子商務網站,或者來做一個大型的入口網站,這些都不成問題。我們遇到的問題可能是,一些通用的內容如何在每個文章頁面中顯示出來?比如電子商務網站中的購買須知、產品介紹、公司介紹等 (每個單獨的產品可能都具有一些共同的介紹),是否意味著我們每次都要單獨新增這些內容呢?那我們維護起來將會是一項很龐大的工程。

如果我們可以在 WordPress 文章中呼叫到另一個頁面的內容,那問題不就解決了嗎?事實上,我就是這麼做的。

思路就是利用了 WordPress 的自定義欄目這個功能,在需要呼叫的文章下面新增一個指定的自定義欄目 (預設的) 和值 (需要呼叫的那個 page 的別名) 。

好了,直接上程式碼:

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<h1<?php the_title(); ?></h1>
<?php
    the_content();//正常日誌內容
    $key = "fireuikey";//自定義欄目名稱
    $fireuiinfo = get_post_meta($post->ID, $key , true);
        if ($fireuiinfo != ''):$fireui_com_key = array('pagename' => $fireuiinfo);//pagename 就是需要呼叫的那個頁面的別名,必須是英文
        query_posts($fireui_com_key);
            if (have_posts()) : while(have_posts()) : the_post(); the_content(); endwhile; endif;
        wp_reset_query();
        endif;
endwhile;
endif;
?>

因為當初做這個專案比較急,因此程式碼可能會比較草率,或者還有其他的方法。但,至少可以肯定的是,我所使用的這個方法到目前為止一直使用良好。

使用方法,上面的程式碼替換 single.php 中的主迴圈部分 (當然,你可以根據你模板的實際情況進行呼叫和新增樣式) 。新增文章時,同時新增一個自定義欄目,欄目名稱為”fireuikey”(可以換成任何你喜歡的變數名稱,需要同步修改上面的程式碼!),值就填寫需要被呼叫的 page 的別名 (英文) 。如果自定義欄目為空或者不新增,那麼將不會執行呼叫,預設文章也會完美呈現。