サポート » 使い方全般 » カスタム投稿新着一覧を出力するコード

  • 新着一覧を出力するコードをfunctionに入れたのですが、
    menu というカスタム投稿の場合、これをどう書き換えたらいいかわかりません。
    よろしくお願いいたします。

    //新着一覧を出力するショートコード
    function getCatItems($atts, $content = null){
    	extract(shortcode_atts(array(
    		"num" => '5',
    		"cat" => ''
    	), $atts));
    
    	global $post;
    	$oldpost = $post;
    	$myposts = get_posts('numberposts='.$num.'&order=DESC&orderby=post_date&category='.$cat);
    	$retHtml = '<ul>';
    	$i = 0;
    
    	foreach($myposts as $post):
    		setup_postdata($post);
    		$i = $i + 1;
    		//$retHtml.='<li class="li'.$i.'"><h4><a href="'.get_permalink().'">'.get_the_post_thumbnail($id).'<span class="entry-date">'.get_the_date('m月d日').'</span>&nbsp;&nbsp;<span class="entry-title">'.mb_substr($post->post_title, 0, 20).'</span></a></h4></li>';
    		$retHtml.='<li class="li'.$i.'"><a href="'.get_permalink().'"><span class="entry-date">>&nbsp;&nbsp;'.get_the_date('Y.m.d').'</span>&nbsp;&nbsp;&nbsp;<span class="entry-title">';
    		if (strlen($post->post_title) > 60) {
    			$retHtml.=mb_substr($post->post_title, 0, 60).'...';
    		}else{
    			$retHtml.= get_the_title();
    		}
    		$retHtml.='</span></a></li>';
    	endforeach;
    
    	$retHtml.='</ul>';
    	$post = $oldpost;
    	return $retHtml;
    }
    add_shortcode("list","getCatItems");
3件の返信を表示中 - 1 - 3件目 (全3件中)
  • 関数 get_posts のパラメータ post_type にカスタム投稿タイプを指定できます。省略すると標準の投稿(post_type の値でいうと 'post' )が指定されたことになります。日本語Codex の get_posts の用例(タクソノミーパラメータ、カスタムフィールドパラメータのサンプルコードの中)に出てくるので参考にどうぞ。

    アドバイスありがとうございます
    なんとか出来てしまいました。
    しかし下記の書き方ですと、タクソノミーやタームごとにfunction書かないといけなくなってしまうとおもいます。。

    例えば、 functionの記述は1で
    [list_pancake cat=タクソノミ(カテゴリ)名]
    といったショートコードで済むようにするにはどうすればいいでしょうか?

    よろしくお願いいたします。

    function getCatItems($atts, $content = null){
    	$args = array(
    	 'posts_per_page' => 3,
    	 'orderby' => 'rand',
    	 'post_type' => 'menu',
    	 'menulist' => 'food',
    	 'post_status' => 'publish'
    	);
    
    	global $post;
    	$oldpost = $post;
    	$myposts = get_posts($args);
    	$retHtml = '<ul>';
    	$i = 0;
    
    	foreach($myposts as $post):
    		setup_postdata($post);
    		$i = $i + 1;
    		$retHtml.='<li class="li'.$i.'"><a href="'.get_permalink().'">'. get_the_post_thumbnail( $page->ID, 'menuimg',  'class=img-circle img-responsive mauto display'  ) .'</a><a href="'.get_permalink().'"><h2 class="entry-title">';
    		if (strlen($post->post_title) > 60) {
    			$retHtml.=mb_substr($post->post_title, 0, 60).'...';
    		}else{
    			$retHtml.= get_the_title();
    		}
    		$retHtml.='</h2></a>'. get_field('price') .'<p>'. get_the_excerpt() .'</p></li>';
    	endforeach;
    
    	$retHtml.='</ul>';
    	$post = $oldpost;
    	return $retHtml;
    }
    add_shortcode("list_pancake","getCatItems");

    フォーラムのトップページにある検索窓へ ショートコード を入れて検索するとヒントが見つかりますが、試してみられましたか?

    例えばこれはどうでしょう。そうやって探したものです。
    [解決済み] tagで一覧を出すショートコードが動かない

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「カスタム投稿新着一覧を出力するコード」には新たに返信することはできません。