首页 > WordPress学习 > WordPress增加专题自定义文章类型 并增加专题自定义字段

WordPress增加专题自定义文章类型 并增加专题自定义字段

时间:2022年12月19日 分类:WordPress学习 浏览量:542

WordPress可以通过自定义文章形式添加一个专题模型出来,代码添加如下:

//增加专题功能
function topic_tax() {
    register_post_type( 'topic', //这里的topic可以自行修改,主要体现在URL里面
        array(
            'labels' => array(
                'name' => '专题',
                'singular_name' => '所有专题',
                'add_new' => '添加专题',
                'add_new_item' => '添加新专题',
                'edit' => '编辑',
                'edit_item' => '编辑专题',
                'new_item' => '新专题',
                'view' => '查看专题',
                'view_item' => '查看专题',
                'search_items' => '搜索专题',
                'not_found' => '没有找到相关专题',
                'not_found_in_trash' => '没有专题评论',
                'parent' => '专题评论',
            ),
            'exclude_from_search'=>false,
            'public' => true,
            'menu_position' => 6,
            'supports' => array( 'title', 'editor','custom-fields','thumbnail','excerpt'), //为自定义文章添加标题,编辑器,自定义字段,特色图像,摘要功能
            'taxonomies' => array( '' ), //分类法,我们是单独定义
            'has_archive' => true,
            'taxonomies'=> array('post_tag'), //没有这一句是没有标签功能的
        )
    );
}
add_action( 'init', 'topic_tax' ); //挂载函数
//为商品类自定义类型增加分类功能
add_action( 'init', 'topic_taxs', 0 ); 
function topic_taxs() {
    register_taxonomy(
        'topics', //这个分类法
        'topic', //这个是自定义文章类型,默认文章是post,其他是你自己定义的
        array(
            'labels' => array(
                'name' => '专题分类',
                'add_new_item' => '添加专题',
                'new_item_name' => "新专题分类"
            ),
            'show_ui' => true,
            'show_tagcloud' => true,
            'hierarchical' => true,
        )
    );
}

这样,我们就在我们的主题里添加了一个专题文章模型,可以通过

'post_type' => 'topic'

来实现专题文章的调用。

那么我们如果要展示一些跟专题相关联的文章,想用一个自定义字段来填写,那么可以通过add_meta_box()来实现:

add_action( 'add_meta_boxes', 'topic_link' );
function topic_link() {
    add_meta_box(
        'topic_link',
        '专题关联文章',
        'topic_link_meta_box',
        'topic',
        'normal',
        'high',
    );
}

到这一步,我们在专题添加页面增加了一个自定义字段展示,但是还无法保存数据,需要增加如下代码:

function topic_link_meta_box($post) {
    // 创建临时隐藏表单,为了安全
    wp_nonce_field( 'topic_link_meta_box', 'topic_link_meta_box_nonce' );
    // 获取之前存储的值
    $value = get_post_meta( $post->ID, '_topic_link', true );
    ?>
    <label for="topic_link"></label>
    <input type="text" id="topic_link" name="topic_link" value="<?php echo esc_attr( $value ); ?>" placeholder="输入关联文章ID" >
    <?php
}
add_action( 'save_post', 'topic_link_save_meta_box' );
function topic_link_save_meta_box($post_id){
    // 安全检查
    // 检查是否发送了一次性隐藏表单内容(判断是否为第三者模拟提交)
    if ( ! isset( $_POST['topic_link_meta_box_nonce'] ) ) {
        return;
    }
    // 判断隐藏表单的值与之前是否相同
    if ( ! wp_verify_nonce( $_POST['topic_link_meta_box_nonce'], 'topic_link_meta_box' ) ) {
        return;
    }
    // 判断该用户是否有权限
    if ( ! current_user_can( 'edit_post', $post_id ) ) {
        return;
    }
    // 判断 Meta Box 是否为空
    if ( ! isset( $_POST['topic_link'] ) ) {
        return;
    }
    $topic_link = sanitize_text_field( $_POST['topic_link'] );
    update_post_meta( $post_id, '_topic_link', $topic_link );
}
//增加专题功能 end

如此,我们就完整的添加完毕一个专题,专题自定义字段调用方式如下:

echo '关联ID:'.get_post_meta( get_the_ID(), '_topic_link', true );

如果需要展示这些ID对应的文章,那么只需要将这些ID放入include即可:

$postID = get_post_meta($post->ID, "topic_link", true);
$args = array(
	'post_type'       => 'post',
	'include'         => $postID,
);

如此即放出ID对应的文章了。

版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权

文章名称:WordPress增加专题自定义文章类型 并增加专题自定义字段

文章链接:https://news.yynnw.com/137.html

该作品系作者结合个人学习经验及互联网相关知识整合。如若侵权请通过投诉通道提交信息,我们将按照规定及时处理。

标签:

最新文章

猜你喜欢