wordpress定制

当前位置: HOME > wordpress > 如何通过自定义简码在WordPress中灵活展示文章列表

建站,优化,推广

如何通过自定义简码在WordPress中灵活展示文章列表

 

好久没写wordPress的技术文章了,为了灵活高效调用文章列表,今天搞了一段代码分享给大家。

wordPress的简码简码(Shortcode)是个高效的编辑工具,能够快速添加自定义内容。

简码的设计思路

简码的目的是为了提供一种灵活展示文章列表的方式,包括但不限于以下几点:

  • 支持多种文章类型:不仅仅是标准的文章,还可以是页面或自定义文章类型。
  • 自定义显示数量:用户可以指定显示的文章数量。
  • 多样化展示样式:例如仅显示标题、标题加图片、标题加日期等。
  • 分类筛选:根据文章的分类来过滤显示的文章。
  • 自定义字段筛选:根据文章是否含有特定的自定义字段来进一步筛选文章。

简码的实现

简码的实现主要通过add_shortcode函数,在WordPress中注册了一个新的简码posts_list。通过传入的参数,这个简码能够灵活地根据用户需求查询和展示文章列表。

以下是简码实现的核心部分:

function custom_posts_list_shortcode($atts) {
    // 获取短代码属性,并设置默认值
    $atts = shortcode_atts(
        array(
            'type' => 'post', // 默认文章类型为'post'
            'count' => 5, // 默认显示5篇文章
            'style' => 'title', // 默认样式仅显示标题
            'category' => '', // 文章分类,默认为空,表示不根据分类筛选
            'meta_key' => '', // 自定义字段键名,默认为空,表示不根据自定义字段筛选
        ),
        $atts,
        'posts_list'
    );

    // 构建查询参数
    $query_args = array(
        'post_type' => $atts['type'],
        'posts_per_page' => $atts['count'],
    );

    // 如果指定了分类,则添加到查询参数中
    if (!empty($atts['category'])) {
        $query_args['category_name'] = $atts['category'];
    }

    // 如果指定了自定义字段,则添加到查询参数中
    if (!empty($atts['meta_key'])) {
        $query_args['meta_key'] = $atts['meta_key'];
        $query_args['meta_value'] = array(''); // 这里假设你只是想检查键存在,而不关心键的值
        $query_args['meta_compare'] = '!=';
    }

    $the_query = new WP_Query($query_args);

    // 开始生成列表
    $output = '<ul class="custom-posts-list">';
    if ($the_query->have_posts()):
        while ($the_query->have_posts()): $the_query->the_post();
            // 根据样式选择显示方式
            switch ($atts['style']) {
                case 'image_title':
                    // 显示图片和标题
                    $output .= '<li><img src="' . get_the_post_thumbnail_url(get_the_ID(), 'thumbnail') . '" alt="' . get_the_title() . '">';
                    $output .= '<a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
                    break;
                case 'title_date':
                    // 显示标题和日期
                    $output .= '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a> ';
                    $output .= '<span>' . get_the_date() . '</span></li>';
                    break;
                default:
                    // 默认仅显示标题
                    $output .= '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
                    break;
            }
        endwhile;
    endif;
    wp_reset_postdata();
    $output .= '</ul>';

    return $output;
}
add_shortcode('posts_list', 'custom_posts_list_shortcode');

使用方法:
[posts_list type=”post” count=”5″ style=”image_title” category=”news” meta_key=”featured”]
参数应该大概能看出来意思吧,只渡有缘人。

留下您的宝贵意见

您的电子邮箱地址不会被公开。 必填项已用*标注

12341