サポート » 使い方全般 » show_last_updateに代わるタグはありませんか

  • 解決済 SxS

    (@sinore-laxdesigncom)


    現在、wp_list_categories で、カスタムポストのタクソノミーを出力しています。
    そのタクソノミーの後ろに、タクソノミー内での記事の最終投稿日を出力したいと思っています。

    非推奨となっている、show_last_update に代わるタグ、もしくはアイデアがあればご教示いただきたいと思い、投稿させていただきました。

    現在は

    <?php wp_list_categories(array('title_li'=>'','taxonomy'=>'document-cat','show_count' =>0,'show_last_update'=>true)); ?>

    と書いていますが、やはり更新日は出力されません。

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

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • こんにちは

    show_last_update パラメータは、バージョン 3.4 で削除されたようです。

    wp_list_categories() はリストをレンダリングする Walker クラスを指定できるので、これを使用して投稿日を追加するのもいいかもしれませ。

    例)

    functions.php 等に、

    class My_Walker_Category extends Walker_Category {
    	var $date_format;
    
    	function __construct( $date_format ) {
    		$this->date_format = $date_format;
    	}
    
    	function start_el( &$output, $category, $depth, $args ) {
    		$output .= '<li><a href="' . get_category_link( $category->term_id ) . '" title="' . esc_attr( $category->name ) . '" rel="category">' . $category->cat_name . '</a>';
    
    		$args = array(
    			'posts_per_page' => 1,
    			'tax_query' => array( array(
    				'taxonomy' => 'document-cat',
    				'field' => 'term_id',
    				'terms' => $category->term_id
    			) )
    		);
    
    		if ( $posts = get_posts( $args ) ) {
    			$output .= ' ' . date( $this->date_format, strtotime( $posts[0]->post_date ) );
    		}
    	}
    }

    テンプレートに、

    <?php wp_list_categories( array( 'taxonomy' => 'document-cat', 'walker' => new My_Walker_Category( get_option( 'date_format' ) ) ) ); ?>

    • この返信は6年、 1ヶ月前にishitakaが編集しました。
    トピック投稿者 SxS

    (@sinore-laxdesigncom)

    ishikita様、こんにちは。
    ソースをありがとうございました!
    上記、試しましたところ互換性のエラーが出ましたので、

    function start_el( &$output, $category, $depth, $args ) {

    function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0){
    と、
    させていただきました。
    そしてテンプレートで出力を・・と思ったのですが、出力されませんでした。
    タクソノミー出力は正常に出来ているので、一番最後のdateのところか・・?と思ってはいるのですが、今一度ヒントをご教示いただけましたら幸いです。

    何卒よろしくお願い申し上げます。

    上記、試しましたところ互換性のエラーが出ましたので、

    失礼しました(汗

    出力されませんでした。

    get_posts() で投稿を取得できていないのかもしれません。
    取得できているかどうかを調べるため下記のように変更してみてはどうでしょうか。

    if ( $posts = get_posts( $args ) ) {
    	$output .= ' ' . date( $this->date_format, strtotime( $posts[0]->post_date ) );
    }

    if ( $posts = get_posts( $args ) ) {
    	$output .= ' ' . date( $this->date_format, strtotime( $posts[0]->post_date ) );
    } else {
    	$output .= ' 投稿がありません。';
    }

    なお、コード中の “document-cat” は実際のタクソノミーの名前を記述してください。
    ちなみに、タクソノミーの名前にハイフンは使えません。
    http://wpdocs.osdn.jp/関数リファレンス/register_taxonomy

    wp_list_categories() の代わりに、get_categories() を使用するのもいいかもしれません。

    テンプレートに、

    <?php
    $date_format = get_option( 'date_format' );
    $categories = get_categories( array( 'taxonomy' => 'タクソノミーの名前' ) ); 
    echo '<ul>';
    foreach ( $categories as $category ) {
     	echo '<li><a href="' . get_category_link( $category->term_id ) . '" title="' . esc_attr( $category->name ) . '" rel="category">' . $category->cat_name . '</a>';
    
    	$args = array(
    		'posts_per_page' => 1,
    		'orderby' => 'date',
    		'tax_query' => array( array(
    			'taxonomy' => 'タクソノミーの名前',
    			'field' => 'term_id',
    			'terms' => $category->term_id
    		) )
    	);
    	if ( $my_posts = get_posts( $args ) ) {
    		echo ' ' . date( $date_format, strtotime( $my_posts[0]->post_date ) );
    	} else {
    		echo ' 投稿がありません。';
    	}
    
    	echo '</li>' . "\n";
    }
    echo '</ul>';
    ?>
    トピック投稿者 SxS

    (@sinore-laxdesigncom)

    ishikita様、ありがとうございました!!!!
    両コードとも、いけました!!!!

    初めは、「投稿がありません」と出てくるのでおかしいな、と思ったのですが、
    $args = array( 

    'post_type' => 'document',
    を追加したら素晴らしく完璧に表示されました!!!!

    とても嬉しいです!!ありがとうございます。
    拙い説明をご理解いただき、感謝しております。
    解決済みとさせていただきます!!

    ありがとうございました!!!

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「show_last_updateに代わるタグはありませんか」には新たに返信することはできません。