wordpress块简码插件

注册了一个自定义块类型的文章,支持分类,并在后台文章列表中显示shortcode,目的是为了方便调用。代码如下:

<?php
/*
Plugin Name: 块简码插件
Description: 注册一个自定义块类型的文章,支持分类,并在后台文章列表中显示shortcode。
Version: 1.0
Text Domain: block_shortcode
Author: 殷江碧
*/

// 注册块类型文章
function register_block_shortcode_post_type() {
    $labels = array(
        'name'               => _x('块简码', '文章类型通用名称', 'your-text-domain'),
        'singular_name'      => _x('块简码', '文章类型单数名称', 'your-text-domain'),
        'menu_name'          => _x('块简码', '后台菜单', 'your-text-domain'),
        'name_admin_bar'     => _x('块简码', '在管理工具栏上添加新项目', 'your-text-domain'),
        'add_new'            => _x('添加新块简码', '文章', 'your-text-domain'),
        'add_new_item'       => __('添加新块简码', 'your-text-domain'),
        'new_item'           => __('新块简码', 'your-text-domain'),
        'edit_item'          => __('编辑块简码', 'your-text-domain'),
        'view_item'          => __('查看块简码', 'your-text-domain'),
        'all_items'          => __('所有块简码', 'your-text-domain'),
        'search_items'       => __('搜索块简码', 'your-text-domain'),
        'parent_item_colon'  => __('父级块简码:', 'your-text-domain'),
        'not_found'          => __('未找到块简码。', 'your-text-domain'),
        'not_found_in_trash' => __('回收站中未找到块简码。', 'your-text-domain')
    );

    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => true,
        'query_var'          => true,
        'rewrite'            => array('slug' => 'block-shortcode'),
        'capability_type'    => 'post',
        'has_archive'        => true,
        'hierarchical'       => false,
        'menu_position'      => null,
        'supports'           => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments'),
        'taxonomies'         => array('block-shortcode-category'),
        'show_in_rest'       => true, // 添加 show_in_rest 参数
    );

    register_post_type('block-shortcode', $args);
}
add_action('init', 'register_block_shortcode_post_type');

// 注册块简码分类
function register_block_shortcode_category_taxonomy() {
    $labels = array(
        'name'              => _x('块简码分类', '分类法通用名称', 'your-text-domain'),
        'singular_name'     => _x('块简码分类', '分类法单数名称', 'your-text-domain'),
        'search_items'      => __('搜索块简码分类', 'your-text-domain'),
        'all_items'         => __('所有块简码分类', 'your-text-domain'),
        'parent_item'       => __('父级块简码分类', 'your-text-domain'),
        'parent_item_colon' => __('父级块简码分类:', 'your-text-domain'),
        'edit_item'         => __('编辑块简码分类', 'your-text-domain'),
        'update_item'       => __('更新块简码分类', 'your-text-domain'),
        'add_new_item'      => __('添加新块简码分类', 'your-text-domain'),
        'new_item_name'     => __('新块简码分类名称', 'your-text-domain'),
        'menu_name'         => __('块简码分类', 'your-text-domain'),
    );

    $args = array(
        'hierarchical'      => true,
        'labels'            => $labels,
        'show_ui'           => true,
        'show_admin_column' => true,
        'query_var'         => true,
        'rewrite'           => array('slug' => 'block-shortcode-category'),
        'show_in_rest'      => true, // 添加 show_in_rest 参数
    );

    register_taxonomy('block-shortcode-category', array('block-shortcode'), $args);
}
add_action('init', 'register_block_shortcode_category_taxonomy');

// 添加块简码短代码
function block_shortcode_callback($atts) {
    $atts = shortcode_atts(
        array(
            'id' => '',
        ),
        $atts,
        'block_shortcode'
    );

    $post_id = isset($atts['id']) ? intval($atts['id']) : 0;

    $output = '';

    if ($post_id > 0) {
        $output = get_post_field('post_content', $post_id);
    }

    return $output;
}
add_shortcode('block_shortcode', 'block_shortcode_callback');

// 在后台列中显示短代码
function display_shortcode_in_admin_column($column, $post_id) {
    if ($column == 'shortcode') {
        $shortcode = '[block_shortcode id=' . $post_id . ']';
        echo esc_html($shortcode);
    }
}
add_action('manage_block-shortcode_posts_custom_column', 'display_shortcode_in_admin_column', 10, 2);

// 添加短代码列到后台
function add_shortcode_column_to_admin($columns) {
    $columns['shortcode'] = __('短代码', 'your-text-domain');
    return $columns;
}
add_filter('manage_block-shortcode_posts_columns', 'add_shortcode_column_to_admin');
© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称常用语 夸夸
夸夸
还有吗!没看够!
表情代码图片

    暂无评论内容