PHP:使用WordPress API構建用於列出子頁面的簡碼

WordPress PHP

目前,我們正在為企業客戶進行相當複雜的實施。 該網站是用WordPress構建的,但有很多風吹草動。 通常,當我進行此類工作時,我喜歡保存自定義代碼,以便以後在其他站點上重新使用。 在這種情況下,我認為它是如此有用,我想與世界分享。 我們正在使用 使用Fusion Page Builder的Avada WordPress主題 作為父主題,並在子主題中部署了大量自定義代碼。

WordPress的API中已經有一些功能,可用於列出子頁面,例如wp_list_pages和get_pages。 問題是,如果您希望動態創建包含大量信息的列表,它們將不會返回足夠的信息。

對於該客戶,他們希望發布職位描述,並希望他們的職位空缺列表在發布日期之前按降序自動生成。 他們還想顯示該頁面的摘錄。

因此,首先,我們必須向頁面模板添加摘錄支持。 在functions.php中為其主題添加了:

add_post_type_support('page','excerpt');

然後,我們需要註冊一個自定義的簡碼,該簡碼將生成子頁面列表,它們的鏈接以及它們的摘錄。 為此,我們必須使用 WordPress循環。 在functions.php中,我們添加了:

//在List函數中列出子頁面dknm_list_child_pages($ atts,$ content =“”){global $ post; $ atts = shortcode_atts(array('ifempty'=>'No Records','aclass'=>''),$ atts,'list_subpages'); $ args = array('post_type'=>'page','posts_per_page'=> -1,'post_parent'=> $ post-> ID,'orderby'=>'publish_date','order'=>'DESC' ,); $ parent =新的WP_Query($ args); if($ parent-> have_posts()){$ string。= $ content。' '; while($ parent-> have_posts()):$ parent-> the_post(); $ string。='“ .get_the_title()。” '; if(has_excerpt($ post-> ID)){$ string。='-'.get_the_excerpt(); } $ string。=' '; 最後} else {$ string =' '。$ atts ['ifempty']。 '; } wp_reset_postdata(); 返回$ string; } add_shortcode('list_subpages','dknm_list_child_pages');

現在,可以在整個站點中實施該短代碼,以顯示帶有鏈接和摘錄的子頁面。 用法:

[list_subpages aclass =“ button” ifempty =“對不起,我們目前沒有職位空缺。”] 工作清單[/ list_subpages]

結果是一個很好的,乾淨的,無序的已發布職位列表,這些職位是其職業頁面下的子頁面。

如果沒有發布的作業(沒有子頁面),它將發布:

抱歉,我們目前沒有職位空缺。

如果有發布的工作(子頁面),它將發布:

工作清單:

你覺得呢?

本網站使用Akismet來減少垃圾郵件。 了解您的評論如何處理.