PHP:WordPress APIを使用して、サブページを一覧表示するショートコードを作成します
現在、エンタープライズクライアント向けの非常に複雑な実装に取り組んでいます。 このサイトはWordPressで構築されていますが、たくさんのベルとホイッスルがあります。 多くの場合、この種の作業を行うときは、後で他のサイトで転用するためにカスタムコードを保存するのが好きです。 今回はとても便利な機能だと思い、世界と共有したいと思いました。 私たちは使用しています Fusion PageBuilderを使用したAvadaWordPressテーマ 親テーマとして、子テーマにかなりのカスタムコードをデプロイします。
WordPressのAPIには、wp_list_pagesやget_pagesなどのサブページを一覧表示するために使用できる関数がすでにいくつかあります。 問題は、大量の情報を含むリストを動的に作成したい場合、十分な情報が返されないことです。
この顧客の場合、求人の説明を投稿し、求人のリストを公開日から降順で自動的に生成したいと考えていました。 彼らはまた、ページの抜粋を表示したかった。
そのため、最初に、ページテンプレートに抜粋サポートを追加する必要がありました。 テーマのfunctions.phpに、次のものを追加しました。
add_post_type_support( 'ページ'、 '抜粋');
次に、サブページのリスト、サブページへのリンク、およびサブページの抜粋を生成するカスタムショートコードを登録する必要がありました。 これを行うには、を使用する必要があります WordPressのループ。 Functions.phpに、以下を追加しました。
//リスト関数のサブページを一覧表示します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 = new 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]
その結果、公開された求人のすてきでクリーンな順序なしリストが作成されます。これは、キャリアページの下の子ページです。
公開された求人がない(子ページがない)場合は、次の情報が公開されます。
申し訳ありませんが、現在、求人はありません。
公開された求人(子ページ)があった場合は、以下を公開します。
仕事のリスト: