WordPress PostType(自定义文章类型)

2021-03-08 0 101

确立一个新的 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 BoxMeta 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;

 

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

一直被模仿,从未被超越!

常见问题
  • 本站所有源码都是通过互联网采集而来,不保证源码得完整性和可用性,如果介意请勿购买!
查看详情
  • 本站源码不提供任何服务帮助。本站只是提供源码,不提供服务帮助!
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务