2017-12-05 3 views
0

私はワードプレスショートコードを作成し、私が欲しいと思っている方法について初めてです。特定のものがありません。現在のところ、私は任意のページに[子供たち]を置くことができますし、カスタムポストタイプの "子供"からのすべての投稿のクエリを取得します。ショートコード内のカテゴリIDを追加するオプションを追加したいと思います。二ショートコードにカテゴリオプションを追加するには

add_shortcode('children', 'display_custom_post_type'); 

function display_custom_post_type(){ 
    $args = array(
'post_type' => 'children', 
'post_status' => 'publish', 
'orderby' => 'title', 
'order' => 'ASC', 
    ); 
    $string = ''; 
    $query = new WP_Query($args); 
    if($query->have_posts()){ 
     while($query->have_posts()){ 
      $query->the_post(); 
      $string .= '<div id="childWrapper"><div id="childImage"><a href="' . get_permalink() . '">' . get_the_post_thumbnail() . '</a></div><div style="clear: both;"></div><div id="childName">' . get_the_title() . '</div><div style="clear: both;"></div></div>'; 
     } 
    } 
    wp_reset_postdata(); 
    return $string; 
} 

- それは複数のカテゴリ内の記事を表示することが可能ですが、ポストは、各カテゴリ内にある場合にのみ:子どもカテゴリ=「8」]はここで私はこれまで持っているコードです。たとえば、重要なケアと手術が必要なカテゴリに属する​​子供のリストを表示します。

ご協力いただければ幸いです。

+0

あなたはパラメータ化[ショート](https://wordpress.stackexchange.com/questions/84450/multiple-parameters-for-a-shortcode)を使用することができ、あなたは、パラメータとして、カテゴリ属性を渡すことができます。 –

答えて

0

WordPressコーデックスからShortcode functionを参照してください。あなたの分類名がカテゴリであると仮定して、私は自分の現在のコードを変更しました。

/** 
* [children category="5,7,8"] 
*/ 
add_shortcode('children' , 'display_custom_post_type'); 

function display_custom_post_type($atts) { 

    $atts = shortcode_atts(array(
     'category' => '' 
    ), $atts); 

    //If category is multiple: 8,9,3 
    $categories = explode(',' , $atts['category']); 

    $args = array(
      'post_type'  => 'children', 
      'post_status' => 'publish', 
      'orderby'  => 'title', 
      'order'   => 'ASC', 
      'posts_per_page'=> -1, 
      'tax_query'  => array(array(
           'taxonomy' => 'category', 
           'field'  => 'term_id', 
           'terms'  => $categories 
          )) 
     ); 

     $string = ''; 
     $query = new WP_Query($args); 

     if(! $query->have_posts()) { 
      return false; 
     } 

     while($query->have_posts()){ 
      $query->the_post(); 
      $string .= '<div id="childWrapper"><div id="childImage"><a href="' . get_permalink() . '">' . get_the_post_thumbnail() . '</a></div><div style="clear: both;"></div><div id="childName">' . get_the_title() . '</div><div style="clear: both;"></div></div>'; 
     } 
     wp_reset_postdata(); 

     return $string; 
} 
+0

Thanks Jignesh - これまでのところ、[children category = 8]のページで次のショートコードを使用していますが、複数のカテゴリを追加しようとすると動作しません - 例えば[children category = 8,17]いいえリスト – mwgideon

+0

@mwgideon私のコードを編集しました。それは動作するはずです。 –

+0

私はショートコードを間違って書いていない限り、何らかの理由でショートコードが変更後に動作していません。私は次のように試してみました:[children category = 8,17] and [children category = "8,17"]そして[children category = '8,17'] – mwgideon

関連する問題