最新公告
  • 欢迎您光临vivi资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 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 选项,这样表示注册成功:

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

    这时候我们可以新建 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 );
    

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

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

    为 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;
    

     

    文章来自Vivi源码http://www.vxiaotou.com转载请保留本链接,谢谢!

    vivi主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
    vivi小偷官网 » WordPress PostType(自定义文章类型)功能介绍

    常见问题FAQ

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

    发表评论

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

    联系作者
    • 3712会员总数(位)
    • 4999资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 1707稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情