首页 wordpress教程 WordPress给自定义文章类型添加MetaBox

WordPress给自定义文章类型添加MetaBox

2020-07-27 0 1 159

前面我们详细讲解了如何注册自定义文章类型(Post Type)并且为自定义文章类型(Post Type)添加自定义分类,这篇文章将给大家详解如何给自定义文章类型添加MetaBox。

如果没有印象了可以再看看:

WordPress自定义文章类型(PostType)使用方法
WordPress自定义文章类型也就是PostType,是一个非常强大的功能,在开发WordPress主题的时候很常用到,例如:网址导航,那么该如何创建...
wordpress给自定义文章类型添加自定义分类法
上一篇文章我们详细讲解了WordPress自定义文章类型(PostType)使用方法并且成功注册了一个自定义文章类型命名为 site,这篇文章将给大家...

就拿之前的案例来说,我们想要添加的网址导航类型不能仅仅只有文章内容,我们还需要额外添加一些 网址链接 之类的有关内容。那么就需要添加自定义 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;

标题:WordPress给自定义文章类型添加MetaBox

分类:wordpress教程

链接:https://www.ygtheme.com/207.html

版权:

评论
暂无评论