最新公告
  • 欢迎您光临大资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • WordPress PostType(自定义文章类型)功能介绍

    WordPress PostType(自定义文章类型)功能介绍 最后编辑:2021-04-25
    增值服务: 自动发货 使用说明 安装指导 环境配置二次开发BUG修复

    WordPress PostType(自定义文章类型)功能介绍

    创建一个新的 Post Type 需要使用 register_post_type 函数注,在你主题的 functions.php 文件下调用该函数:

    register_post_type( $post_type, $args );
    //$post_type 参数就是你自定义 Post Type 的名称。

    function my_custom_post_product() {
    $args = array();
    register_post_type( ‘product’, $args );
    }
    add_action( ‘init’, ‘my_custom_post_product’ );

    参数很多,为了写教程方便,只列出比较常用的参数,大体结构如下:

    function my_custom_post_site() {
    $labels = array(
    ‘name’ => _x( ‘网址导航’, ‘post type 名称’ ),
    ‘singular_name’ => _x( ‘网址’, ‘post type 单个 item 时的名称,因为英文有复数’ ),
    ‘add_new’ => _x( ‘新建网址’, ‘添加新内容的链接名称’ ),
    ‘add_new_item’ => __( ‘新建网址’ ),
    ‘edit_item’ => __( ‘编辑网址’ ),
    ‘new_item’ => __( ‘新网址’ ),
    ‘all_items’ => __( ‘所有网址’ ),
    ‘view_item’ => __( ‘查看网址’ ),
    ‘search_items’ => __( ‘搜索网址’ ),
    ‘not_found’ => __( ‘没有找到有关网址’ ),
    ‘not_found_in_trash’ => __( ‘回收站里面没有相关网址’ ),
    ‘parent_item_colon’ => ”,
    ‘menu_name’ => ‘网址’
    );
    $args = array(
    ‘labels’ => $labels,
    ‘description’ => ‘网址信息’,
    ‘public’ => true,
    ‘menu_position’ => 5,
    ‘supports’ => array( ‘title’, ‘editor’, ‘thumbnail’, ‘excerpt’, ‘comments’ ),
    ‘has_archive’ => true
    );
    register_post_type( ‘site’, $args );
    }
    add_action( ‘init’, ‘my_custom_post_site’ );

    将上面代码加到主题 functions.php 的最下面,进入后台你会发现多出了 site 选项,这样表示注册成功:

    这时候我们可以新建 site发表一篇电影类型的文章了。但是这样与文章类型基本相同,我们需要更多的自定义来完善我们的 site类型。

    添加分类功能需要使用函数 register_taxonomy,使用方法也很简单,跟注册 Post Type 函数类似,只不过多了一个参数用来指定对应的 Post Type :

    register_taxonomy( $taxonomy, $object_type, $args );

    就本例而言,可以配置如下常用参数:

    function my_taxonomies_site() {
    $labels = array(
    ‘name’ => _x( ‘网址分类’, ‘taxonomy 名称’ ),
    ‘singular_name’ => _x( ‘网址分类’, ‘taxonomy 单数名称’ ),
    ‘search_items’ => __( ‘搜索网址分类’ ),
    ‘all_items’ => __( ‘所有网址分类’ ),
    ‘parent_item’ => __( ‘该网址分类的上级分类’ ),
    ‘parent_item_colon’ => __( ‘该网址分类的上级分类:’ ),
    ‘edit_item’ => __( ‘编辑网址分类’ ),
    ‘update_item’ => __( ‘更新网址分类’ ),
    ‘add_new_item’ => __( ‘添加新的网址分类’ ),
    ‘new_item_name’ => __( ‘新网址分类’ ),
    ‘menu_name’ => __( ‘网址分类’ ),
    );
    $args = array(
    ‘labels’ => $labels,
    ‘hierarchical’ => true,
    );
    register_taxonomy( ‘sitecat’, ‘site’, $args );
    }
    add_action( ‘init’, ‘my_taxonomies_site’, 0 );

    添加到主题之后,我们看到出现了熟悉的文章分类功能,只不过上面的文案全部变成我们自定义的内容了:

    为 Post Type 添加自定义 Meta Box

    我们想要添加的电影类型不能仅仅只有正文内容,我们还需要额外添加一些 导演 之类的有关内容。那么就需要添加自定义 Meta Box,Meta Box 可以在文章发表页面中添加自定义的表单,编写文章的时候可以填写额外的信息然后在前端调用出来。

    自定义 Meta Box 需要用到 add_meta_box 函数:

    add_meta_box( $id, $title, $callback, $post_type, $context,$priority, $callback_args );

    我们注册一个 Meta Box :

    add_action( ‘add_meta_boxes’, ‘site_director’ );
    function site_director() {
    add_meta_box(
    ‘site_director’,
    ‘网址链接’,
    ‘site_director_meta_box’,
    ‘site’,
    ‘side’,
    ‘low’
    );
    }

    然后在配置参数里面指定了回调函数 site_director_meta_box,我们需要在这个函数里面创建表单:

    function site_director_meta_box($post) {

    // 创建临时隐藏表单,为了安全
    wp_nonce_field( ‘site_director_meta_box’, ‘site_director_meta_box_nonce’ );
    // 获取之前存储的值
    $value = get_post_meta( $post->ID, ‘_site_director’, true );
    ?>
    <label for=”site_director”></label>
    <input type=”text” id=”site_director” style=”width:100%” name=”site_director” value=”<?php echo esc_attr( $value ); ?>” placeholder=”输入网址链接” >
    <?php
    }
    add_action( ‘save_post’, ‘site_director_save_meta_box’ );
    function site_director_save_meta_box($post_id){
    // 安全检查
    // 检查是否发送了一次性隐藏表单内容(判断是否为第三者模拟提交)
    if ( ! isset( $_POST[‘site_director_meta_box_nonce’] ) ) {
    return;
    }
    // 判断隐藏表单的值与之前是否相同
    if ( ! wp_verify_nonce( $_POST[‘site_director_meta_box_nonce’], ‘site_director_meta_box’ ) ) {
    return;
    }
    // 判断该用户是否有权限
    if ( ! current_user_can( ‘edit_post’, $post_id ) ) {
    return;
    }
    // 判断 Meta Box 是否为空
    if ( ! isset( $_POST[‘site_director’] ) ) {
    return;
    }
    $site_director = sanitize_text_field( $_POST[‘site_director’] );
    update_post_meta( $post_id, ‘_site_director’, $site_director );
    }

    添加自定义字段:

    add_action(“manage_posts_custom_column”, “site_custom_columns”);
    add_filter(“manage_edit-site_columns”, “site_edit_columns”);
    function site_custom_columns($column){
    global $post;
    switch ($column) {
    case “site_director”:
    echo get_post_meta( $post->ID, ‘_site_director’, true );
    break;
    }
    }
    function site_edit_columns($columns){

    $columns[‘site_director’] = ‘网址’;

    return $columns;
    }

    显示 Meta Box 内容

    echo ‘网址:’.get_post_meta( get_the_ID(), ‘_site_director’, true );

    调用 WP_Query 高度自定义调用 Post Type 的内容

    $args = array( ‘post_type’ => ‘site’, ‘posts_per_page’ => 10 );
    $loop = new WP_Query( $args );
    while ( $loop->have_posts() ) : $loop->the_post();
    the_title();
    echo ‘

    <div class=”entry-content”>’;
    the_content();
    echo ‘</div>’;
    endwhile;

    猜你在找

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    大资源网
    一个高级程序员模板开发平台
    • 2021-04-25Hi,初次和大家见面了,请多关照!

    发表评论

    售后服务:

    • 售后服务范围 1、商业模板使用范围内问题免费咨询
      2、源码安装、模板安装(一般 ¥50-300)服务答疑仅限SVIP用户
      3、单价超过200元的模板免费一次安装,需提供服务器信息。
      付费增值服务 1、提供dedecms模板、WordPress主题、discuz模板优化等服务请详询在线客服
      2、承接 WordPress、DedeCMS、Discuz 等系统建站、仿站、开发、定制等服务
      3、服务器环境配置(一般 ¥50-300)
      4、网站的问题处理(需额外付费,500元/次/质保三个月)
      售后服务时间 周一至周日(法定节假日除外) 9:00-23:00
      免责声明 本站所提供的模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: 3482249445@qq.com),我们会及时删除,给您带来的不便,我们深表歉意!

    Hi, 如果你对这款模板有疑问,可以跟我联系哦!

    联系作者
    • 7030会员总数(位)
    • 163674资源总数(个)
    • 2704本周发布(个)
    • 2094今日发布(个)
    • 3679稳定运行(天)

    开通VIP 知识课堂
    升级SVIP尊享更多特权立即升级
    My title page contents
    召唤伊斯特瓦尔