实例:

以下实例是我们假设创建了一个自定义文章类型information。它的taxonomy为informations。那么,我们的短代码是显示出这个自定义文章类型里的文章的标题。
可以自定义的项目是,自定义文章的分类名称及显示数目。

使用方法,可以在指定位置按需求添加下面的任意一行。
// 示例用法:
// [information_posts]
// [information_posts post_term="my_term"]
// [information_posts posts_to_show="3"] 
// [information_posts post_term="my_term" posts_to_show="3"] 
代码,添加到functions.php文件内:
<?php
function recent_information_function($atts)
{
    $atts = shortcode_atts(
        array(
            'post_term' => '',
            'posts_to_show' => ''),
        $atts,
        'information_posts');
    if (!empty($atts[post_term])) {
        $term_slugs = sanitize_text_field($atts[post_term]);
    } else { $terms = get_terms('informations');
        $term_slugs = wp_list_pluck($terms, 'slug'); // 默认设置为所有自定义的分类
    }
    if (!empty($atts[posts_to_show])) {
        $showposts = intval($atts[posts_to_show]);
    } else { $showposts = '3'; // 默认显示3篇
    }
    global $informaiton_query;
    $informaiton_query = new WP_Query(
        array(
            'post_type' => 'information',
            'orderby' => 'date',
            'order' => 'DESC',
            'tax_query' => array(
                array('taxonomy' => 'informations',
                    'field' => 'slug',
                    'terms' => $term_slugs,
                ),
            ),
            'posts_per_page' => $showposts));
    $inner = '';
    if ($informaiton_query->have_posts()) {
        while ($informaiton_query->have_posts()) {
            $informaiton_query->the_post();
            $return_string .= '<a href="' . get_permalink() . '">' . get_the_title() . '</a>';}}
    wp_reset_postdata();
    return $return_string;
}
function register_shortcodes()
{
    add_shortcode('information_posts', 'recent_information_function');
}
add_action('init', 'register_shortcodes');
关键函数:
add_shortcode()
shortcode_atts()
本篇文章相关标签: