内容营销
PHP:使用WordPress API构建用于列出子页面的简码
目前,我们正在为企业客户进行相当复杂的实施。 该网站是用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]
结果是一个很好的,干净的,无序的已发布职位列表,这些职位是其职业页面下的子页面。
如果没有发布的作业(没有子页面),它将发布:
抱歉,我们目前没有职位空缺。
如果有发布的工作(子页面),它将发布:
工作清单: