現在実装しているコードのばっくあっぷ(笑)
wp_get_attachment_image_srcとget_post_thumbnail_idで、アイキャッチ画像を取得するようにしている。
さらに、get_the_categoryとかget_the_excerptも活用している。

// ショートコードで呼び出す関数
function Category_List ( $arg = array () ) {
  extract ( shortcode_atts ( array (
    'category'       => '1',
    'posts_per_page' => '5'
  ), $arg ) );
 
  $blog_posts = get_posts ( array ( 
    'posts_per_page' => $posts_per_page,
    'category'       => $category
  ));
 
  $html = Create_Html($blog_posts);
  return $html;
}
add_shortcode('categorylist', 'Category_List');

// HTMLを生成する関数
function Create_Html ( $blog_posts, $type ) {

	$html = '<div>' . "\n";

	foreach ( $blog_posts as $postdata ) {

		switch ($type) {
			case "1":
				$html .= '<a href="' . get_permalink($postdata->ID) . '">' . $postdata->post_title . '</a><br />' . "\n";
//				$html .= mysql2date("Y-m-d H:i", $postdata->post_date) . "<br />\n";
				break;
			case "2":
				$html .= '<img src="' . wp_get_attachment_image_src( get_post_thumbnail_id($postdata->ID), array(32, 32) )[0]  . '" width="32" height="32">' . "\n";
				$html .= '<a href="' . get_permalink($postdata->ID) . '">' . $postdata->post_title . '</a><br />' . "\n";
				break;
			case "3":
				$html .= '<img src="' . wp_get_attachment_image_src( get_post_thumbnail_id($postdata->ID), "thumbnail")[0]  . '">' . "\n";
				$html .= '<a href="' . get_permalink($postdata->ID) . '">' . $postdata->post_title . '</a><br />' . "\n";
				$html .= mysql2date("Y-m-d H:i", $postdata->post_date) . "<br />\n";
				break;
			case "4":
                $html .= '<article>' . "\n";
                $html .= '    <header class="entry-header">' . "\n";

                $html .= '        <a href="' . get_permalink($postdata->ID) . '">' . "\n";
                $html .= '            <div class="catch_image" style="background-image: url(\'' . wp_get_attachment_image_src( get_post_thumbnail_id($postdata->ID), "thumbnail")[0] . '\');"></div>' . "\n";
                $html .= '        </a>' . "\n";

                $current_category = get_the_category($postdata->ID);
                $html .= '        <div class="entry-meta">' . "\n";
                $html .= '            <div class="' . $current_category[0]->slug . '" >' . "\n";
                $html .= '                <a href="' . get_term_link( $current_category[0]->term_id, 'category' ) . '" rel="category">' . $current_category[0]->name . '</a>' . "\n";
                $html .= '            </div>' . "\n";
                $html .= '        </div>' . "\n";

                $html .= '        <div class="entry-meta-author">' . "\n";
                $html .= '            <span class="author vcard">' . "\n";
                $html .= '                <a class="url fn" href="' . get_author_posts_url( $postdata->post_author ) . '" title="' . get_the_author_meta('display_name', $postdata->post_author) . ' の投稿をすべて表示" rel="author">' . get_the_author_meta('display_name', $postdata->post_author) . '</a>' . "\n";
                $html .= '            </span>' . "\n";
                $html .= '        </div>' . "\n";

                $html .= '        <h1 class="entry-title">' . "\n";
                $html .= '            <a href="' . get_permalink($postdata->ID) . '" rel="bookmark">' . $postdata->post_title . '</a><br />' . "\n";
                $html .= '        </h1>' . "\n";

                // get_the_excerptを使うためだけに、setup_postdataを呼ぶ
                setup_postdata($postdata);
                $excerpt = get_the_excerpt();
                // 次の処理に不具合が出ないようにwp_reset_postdataも呼んで終わる
                wp_reset_postdata();

                $html .= '    </header>' . "\n";
                $html .= '    <div class="entry-summary special-page">' . "\n";
                $html .= '        <p>' . $excerpt . '&#8230;</p>' . "\n";
                $html .= '    </div>' . "\n";
                $html .= '</article>' . "\n";
                break;
			default:
				$html .= '<a href="' . get_permalink($postdata->ID) . '" rel="bookmark">' . $postdata->post_title . '</a>' . "\n";
				$html .= mysql2date("Y-m-d H:i", $postdata->post_date) . "<br />\n";
				$html .= '<a href="' . get_author_posts_url( $postdata->post_author ) . '" title="' . get_the_author_meta('display_name', $postdata->post_author) . ' の投稿を全て表示">by ' . get_the_author_meta('display_name', $postdata->post_author) . "</a><br />\n";
				break;
		}
		$html .= "<br />\n";
//		$html .= "<br />\n";
	}

	$html .= '</div>';
	return $html;
}

// 指定したカスタムフィールドの記事を取得する
function GetCustomFieldList( $arg = array () ) {

	// 引数のデフォルト値を設定する
	extract (
		shortcode_atts ( array (
		    'customfield_key'      => 'Tokusyu',	// カスタムフィールドの名前
		    'customfield_value'    => '1',			// カスタムフィールドの値
		    'posts_per_page'       => '10',			// 1ページあたりの件数
		    'paged'                => '1',			// ページ番号
		    'designtype'           => '0',			// HTMLデザインタイプ指定
		    'exclude_id'           => ''			// 取得したくないID(カンマ区切り)
		), $arg )
	);

	$args = array(
		'post_type'      => 'post',				// 投稿情報タイプ
		'posts_per_page' => $posts_per_page,
		'meta_key'       => $customfield_key,
		'meta_value'     => $customfield_value,
		'paged'          => $paged,
		'exclude'        => $exclude_id
	);

	$post_list = get_posts( $args );

	$html = Create_Html($post_list, $designtype);
	return $html;

}
/* ショートコードを追加する */
add_shortcode('GetCustomFieldList', 'GetCustomFieldList');

Post filed under 未分類.