ショートコード内でカテゴリースラッグを取得

下記内容をファイル名 gblsm-get-recent-posts.php で /wordpress/wp-content/plugins/ へアップロード。

<?php
/*
Plugin Name: gblsm Get Recent Posts
Plugin URI: https://ja.forums.wordpress.org/topic/152113
Description: ショートコード内でカテゴリースラッグを取得
Author: gblsm
Version: 0.1
Author URI: https://ja.forums.wordpress.org/profile/13907727
*/

add_shortcode( 'recent', 'getCatItems' );

//指定した投稿数の最新投稿リストを返す
function getCatItems( $atts ) {
  $atts = shortcode_atts( array( 'num' => 5 ), $atts );
  $num = $atts['num'];

  $separator = ' ';

  $myposts = get_posts( 'numberposts=' . $num . '&order=DESC&orderby=post_date' );

  $retHtml = '<dl>';
  foreach ( $myposts as $p1 ):
    // 投稿のカテゴリースラッグを並べた文字列を作る
    $cats = get_the_category( $p1 );
    $slugs = array();
    foreach( $cats as $c1 ) {
      $slugs[] = $c1->slug;
    }
    $className = implode( ' ', $slugs );

    $retHtml .= '<dt>' . get_post_time( 'Y/m/d', false, $p1 ) . '</dt>';
    $retHtml .= '<dd><span class="' . $className . '">';
    $retHtml .= get_the_category_list( $separator, '', $p1 );
    $retHtml .= '</span>' . get_the_title( $p1 ) . '</dd>';
  endforeach;
  $retHtml .= '</dl>';

  return $retHtml;
}
?>
広告