如何创建简码以显示每个类别中的所有帖子

尼尔斯万杰克(Nielsvandijkje)

我有这个问题:我用他自己的类别设置了一个自定义页面。在短代码中,我想获取所有类别,并且在类别中,我想要与该类别相关的所有帖子。

function innovatiewerkplaats_sort($atts, $content = null){

    global $post;

    $terms = get_terms('innovatiewerkplaats_categories'); // Get all terms of a taxonomy

    $nieuws = '';

    foreach($terms as $term):
        $nieuws .= '<div class="one">
                        <h2>Thema <strong>'.$term->name.' id='.$term->term_id.'</strong></h2>
                    <div class="wrapper">';

        $category_query_args = array(
            'post_type' => 'innovatiewerkplaats',
            // 'category' => $term->term_id,
            'category_name' => $term->name,
            // 'cat'  => $term->term_id,
        );

        query_posts($category_query_args);

        if( have_posts() ) : while (have_posts()) : the_post();

            $post_home= get_the_post_thumbnail( $page->ID, 'post-home');
            $thumb = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), '' );
            $url = $thumb['0'];
            $excerpt = get_the_content();
            $excerpta = preg_replace("~(?:\[/?)[^/\]]+/?\]~s", '', $excerpt);

            // $ter = wp_trim_words( apply_filters( 'rpwe_excerpt', $excerpta ), $args['length'], '…' );
            $nieuws .= '<a href="'.get_permalink().'" title="'.get_the_title().'" class="one_fourth workplace">'.$term->term_id.'<span class="img" style="background:url('.$url.') no-repeat center center; background-size:cover;"></span><span class="titel">'.get_the_title().'</span><p></p><span class="more">Lees meer</span></a>';

        endwhile; endif;

        $nieuws .='</div></div>';

    endforeach;

    return $nieuws;
}
耶夫斯卡

注意:请勿使用query_post使用WP_Queryget_posts

请看一下讨论何时使用WP_query(),query_posts()和pre_get_posts

这里是与您的问题相关的示例方法,可根据其类别生成所有帖子,然后通过简码显示以供日后使用。

  1. 在函数内部,您应该先查询所有帖子(使用wp_queryget_posts),
  2. 通过查询循环内的帖子ID获取相关类别。如果是术语分类法,请使用get_the_terms
  3. 使用键构建一个查询数据数组(在这种情况下,我们使用术语slug)对帖子进行分组。
  4. 然后将这些数据用于外部循环,并通过简单循环将其输出。
  5. 按功能构建一个简码add_shortcode(此代码仅使用简单的简码)。

/** Shortcode [my_shortcode_posts] */
add_shortcode( 'my_shortcode_posts', 'so36133962_get_all_posts_by_category' );

/**
 * All posts by category
 * build query by get_posts
 *
 * @return string|null
 */
function so36133962_get_all_posts_by_category( $attr, $content = null )
{
    /**
     * Build custom query
     *
     */
    $args = array(
        'post_type'      => 'your-post-type', // set your custom post type
        'post_status'    => 'publish',
        'posts_per_page' => -1,
        /** add more arguments such as taxonomy query i.e:

                'tax_query' => array( array(
                    'taxonomy' => 'genre', // set your taxonomy
                    'field'    => 'slug',
                    'terms'    => array( 'comedy','drama' ) // set your term taxonomy
                ) )
        */
    );

    $posts = new WP_Query( $args );

    /**
     * Prepare Posts
     *
     */
    $result = array();

    // The Loop
    if ( $posts->have_posts() )
    {
        while ( $posts->have_posts() )
        {
            $posts->the_post();
            /**
             * Get all item in a term taxonomy
             *
             */
            $categories = get_the_terms( get_the_ID(), 'your-taxonomy' /* set your term taxonomy */ );
            if ( ! $categories )
                continue;

            foreach ( $categories as $key => $category )
            {
                $term_name = $category->name;
                $term_slug = $category->slug;
                $term_id   = $category->term_id;
            }

            /**
             * Set thumbnail background cover
             * Use Featured Image
             */
            $img_cover = '';
            if ( has_post_thumbnail() )
            {
                $image_url = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ) );
                if ( ! empty( $image_url[0] ) )
                {
                    $img_cover = '<span class="img" style="background:url( ' . esc_url( $image_url[0] ) . ' ) no-repeat center center; background-size:cover;">';
                }
            }

            /**
             * Format html content
             *
             */
            $format = '<a href="%1$s" title="%2$s" class="post-%3$s">%4$s%2$s</span></br><span class="content-%3$s">%5$s</span></br><span class="more">%6$s</span></a>';

            /**
             * Formatted string post content
             *
             */
            $content = sprintf( $format,
                get_permalink(),
                get_the_title(),
                get_the_ID(),
                $img_cover,
                get_the_excerpt(),
                __( 'Read More', 'text-domain' )
            );

            /**
             * Set an array of each post for output loop
             *
             */
            $result[ $term_slug ][] = array(
                'post_id'      => get_the_ID(),
                'post_content' => $content,
                'term_name'    => $term_name,
                'term_id'      => $term_id
            );
        }
    }
    wp_reset_postdata(); // post reset

    /**
     * Check existing output
     *
     */
    if ( ! $result )
        return;

    /**
     * Output loop
     *
     */
    $output = '';
    foreach ( $result as $slug => $data )
    {
        $count = count( $data );
        for ( $i = 0; $i < $count; $i++ )
        {
            /**
             * Set data as object
             *
             */
            $post = ( object ) array_map( 'trim', $data[ $i ] );

            if ( 0 == $i )
            {
                /**
                 * Set category id and name
                 *
                 */
                $output .= '<div id="term-category-' . absint( $post->term_id ) . '">';
                $output .= '<h3>' . esc_html( $post->term_name ) . '</h3>';
            }

            /**
             * Set post id and content
             *
             */
            $output .= '<div id="post-' . absint( $post->post_id ) . '"><p>' . $post->post_content . '</p></div>';
        }

        $output .= '</div>';
    }

    return $output; // complete
}

您可以根据需要更改元素结构。请注意,使用此代码,每个类别中都没有重复的帖子,并确保您更改代码中注释的值,例如帖子类型和分类法。我希望这有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

创建“查看所有帖子”链接以显示来自WordPress中特定类别的所有帖子

来自分类Dev

如何遍历所有类别以分别显示每个类别的帖子?

来自分类Dev

WordPress:显示所有类别的帖子,每个类别最多5个帖子,并按日期排序?

来自分类Dev

显示Magento Fishpig中的所有帖子类别

来自分类Dev

如何在WordPress中显示类别列表及其所有帖子?

来自分类Dev

获取所有类别,然后显示每个学期的所有帖子

来自分类Dev

使用简码显示所有帖子图片库[图库]

来自分类Dev

每个类别中的木材Wordpress显示帖子

来自分类Dev

按类别显示所有帖子

来自分类Dev

显示特定类别的所有帖子

来自分类Dev

如何显示WordPress中的所有帖子?

来自分类Dev

wp类别显示所有类别的所有帖子,而不是特定类别的特定帖子

来自分类Dev

按类别显示除选定帖子以外的所有帖子

来自分类Dev

Ruby on Rails 4项目。如何显示所有类别的所有帖子?

来自分类Dev

如何创建一个显示每个类别及其帖子数的循环?

来自分类Dev

如何在Wordpress中获取帖子名称下的所有帖子类别?

来自分类Dev

如何通过mysql在wordpress中获取所有类别的所有帖子?

来自分类Dev

如何在博客主帖子列表页面的每个帖子中调用简码?

来自分类Dev

列出wordpress中的所有类别和所有帖子

来自分类Dev

在 wordpress 中显示当前帖子的所有类别名称

来自分类Dev

WordPress-类别未显示所有帖子

来自分类Dev

类别循环显示所有帖子标题(WordPress)

来自分类Dev

创建多个具有不同类别的单个帖子页面,每个页面均显示在滑块上

来自分类Dev

自定义帖子类型显示所有类别的帖子,而不是仅显示特定类别的帖子

来自分类Dev

如何在Jekyll中列出所有没有类别的帖子?

来自分类Dev

如何在 Laravel 中显示所有类别

来自分类Dev

如何在Django中获取同一类别中的所有帖子

来自分类Dev

选择所有类别,每个类别的最后5个帖子

来自分类Dev

如何在Wordpress中回显每个帖子类别

Related 相关文章

  1. 1

    创建“查看所有帖子”链接以显示来自WordPress中特定类别的所有帖子

  2. 2

    如何遍历所有类别以分别显示每个类别的帖子?

  3. 3

    WordPress:显示所有类别的帖子,每个类别最多5个帖子,并按日期排序?

  4. 4

    显示Magento Fishpig中的所有帖子类别

  5. 5

    如何在WordPress中显示类别列表及其所有帖子?

  6. 6

    获取所有类别,然后显示每个学期的所有帖子

  7. 7

    使用简码显示所有帖子图片库[图库]

  8. 8

    每个类别中的木材Wordpress显示帖子

  9. 9

    按类别显示所有帖子

  10. 10

    显示特定类别的所有帖子

  11. 11

    如何显示WordPress中的所有帖子?

  12. 12

    wp类别显示所有类别的所有帖子,而不是特定类别的特定帖子

  13. 13

    按类别显示除选定帖子以外的所有帖子

  14. 14

    Ruby on Rails 4项目。如何显示所有类别的所有帖子?

  15. 15

    如何创建一个显示每个类别及其帖子数的循环?

  16. 16

    如何在Wordpress中获取帖子名称下的所有帖子类别?

  17. 17

    如何通过mysql在wordpress中获取所有类别的所有帖子?

  18. 18

    如何在博客主帖子列表页面的每个帖子中调用简码?

  19. 19

    列出wordpress中的所有类别和所有帖子

  20. 20

    在 wordpress 中显示当前帖子的所有类别名称

  21. 21

    WordPress-类别未显示所有帖子

  22. 22

    类别循环显示所有帖子标题(WordPress)

  23. 23

    创建多个具有不同类别的单个帖子页面,每个页面均显示在滑块上

  24. 24

    自定义帖子类型显示所有类别的帖子,而不是仅显示特定类别的帖子

  25. 25

    如何在Jekyll中列出所有没有类别的帖子?

  26. 26

    如何在 Laravel 中显示所有类别

  27. 27

    如何在Django中获取同一类别中的所有帖子

  28. 28

    选择所有类别,每个类别的最后5个帖子

  29. 29

    如何在Wordpress中回显每个帖子类别

热门标签

归档