按月获取定制帖子

时间:2013-12-24 作者:Dk-Macadamia

我想制作一个自定义post archieve模板,其中我将只按月份显示自定义post。。

我在archieve-news\\u信函中添加了这一点。php

$args = array( \'post_type\' => \'news_letter\', \'posts_per_page\' => 10 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();

/* Include the post format-specific template for the content. If you want to
                 * this in a child theme then include a file called called content-___.php
                 * (where ___ is the post format) and that will be used instead.
                 */
                get_template_part( \'newletter\', get_post_format() );
在哪里news_letter 是我的自定义帖子。。。通过这一点,我得到了所有的职位没有任何排序的月份,意味着我得到了所有月份的职位在十二月的链接。

为了创建archieve链接,我使用了以下方法:

<li><?php wp_get_archives(array(\'type\' => \'monthly\',\'order\'=>\'ASC\')); ?></li>
任何帮助都将不胜感激。。

感谢您的时间和知识分享…:)

1 个回复
SO网友:Tusko Trush

我有点问题wp_get_archives, 你可以试试我对这个问题的解决方案

function get_cpt_archives( $cpt, $echo = false ) {
    global $wpdb;
    $sql = $wpdb->prepare("SELECT * FROM $wpdb->posts WHERE post_type = %s AND post_status = \'publish\' GROUP BY YEAR(wp_posts.post_date), MONTH(wp_posts.post_date) ORDER BY wp_posts.post_date DESC", $cpt);
$results = $wpdb->get_results($sql);

if ( $results ){
    $archive = array();
    foreach ($results as $r){
        $year = date(\'Y\', strtotime( $r->post_date ) );
        $month = date(\'F\', strtotime( $r->post_date ) );
        $month_num = date(\'m\', strtotime( $r->post_date ) );
        $link = get_bloginfo(\'siteurl\') . \'/\' . $cpt . \'/\' . $year . \'/\' . $month_num;
        $this_archive = array( \'month\' => $month, \'year\' => $year, \'link\' => $link );
        array_push( $archive, $this_archive );
    }

    if( !$echo )
        return $archive;
    foreach( $archive as $a ){
        echo \'<li><a href="\' . $a[\'link\'] . \'">\' . $a[\'month\'] . \' \' . $a[\'year\'] . \'</a></li>\';
    }
}
return false;
}
将其放入函数中。主题的php。

然后在需要的地方调用此函数:

    <?php get_cpt_archives(\'post_type\', true); ?>
\'post_type\' - 将此更改为您的帖子类型名称。

第二个参数:

true - 这是一个列表<li>

false - 这是一个数组。

结束

相关推荐

按月获取定制帖子 - 小码农CODE - 行之有效找到问题解决它

按月获取定制帖子

时间:2013-12-24 作者:Dk-Macadamia

我想制作一个自定义post archieve模板,其中我将只按月份显示自定义post。。

我在archieve-news\\u信函中添加了这一点。php

$args = array( \'post_type\' => \'news_letter\', \'posts_per_page\' => 10 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();

/* Include the post format-specific template for the content. If you want to
                 * this in a child theme then include a file called called content-___.php
                 * (where ___ is the post format) and that will be used instead.
                 */
                get_template_part( \'newletter\', get_post_format() );
在哪里news_letter 是我的自定义帖子。。。通过这一点,我得到了所有的职位没有任何排序的月份,意味着我得到了所有月份的职位在十二月的链接。

为了创建archieve链接,我使用了以下方法:

<li><?php wp_get_archives(array(\'type\' => \'monthly\',\'order\'=>\'ASC\')); ?></li>
任何帮助都将不胜感激。。

感谢您的时间和知识分享…:)

1 个回复
SO网友:Tusko Trush

我有点问题wp_get_archives, 你可以试试我对这个问题的解决方案

function get_cpt_archives( $cpt, $echo = false ) {
    global $wpdb;
    $sql = $wpdb->prepare("SELECT * FROM $wpdb->posts WHERE post_type = %s AND post_status = \'publish\' GROUP BY YEAR(wp_posts.post_date), MONTH(wp_posts.post_date) ORDER BY wp_posts.post_date DESC", $cpt);
$results = $wpdb->get_results($sql);

if ( $results ){
    $archive = array();
    foreach ($results as $r){
        $year = date(\'Y\', strtotime( $r->post_date ) );
        $month = date(\'F\', strtotime( $r->post_date ) );
        $month_num = date(\'m\', strtotime( $r->post_date ) );
        $link = get_bloginfo(\'siteurl\') . \'/\' . $cpt . \'/\' . $year . \'/\' . $month_num;
        $this_archive = array( \'month\' => $month, \'year\' => $year, \'link\' => $link );
        array_push( $archive, $this_archive );
    }

    if( !$echo )
        return $archive;
    foreach( $archive as $a ){
        echo \'<li><a href="\' . $a[\'link\'] . \'">\' . $a[\'month\'] . \' \' . $a[\'year\'] . \'</a></li>\';
    }
}
return false;
}
将其放入函数中。主题的php。

然后在需要的地方调用此函数:

    <?php get_cpt_archives(\'post_type\', true); ?>
\'post_type\' - 将此更改为您的帖子类型名称。

第二个参数:

true - 这是一个列表<li>

false - 这是一个数组。

相关推荐