在用一些主题的使用过程中,我们经常可以看到有些插件在文章的编辑页面插入了自定义文章字段编辑面板,比如我使用过的付费下载插件Erphpdown,编辑页面如下图所示。
WordPress非常强大,假如我们不仅仅只满足发表文章,如果我们想做一个主题来展示电子书的信息,那么我们是不是需要在每一个文章中记录每一本电子书的书名、作者、ISBN、价格等等信息,那么这个时候我们就需要给文章添加meta_box,也就是自定义字段,使用文章的自定义字段去记录与书籍相关的信息。
在WordPress中为文章自定义字段,需要用到add_meta_box
函数,其新增的信息会保存到数据库的wp_postmeta
表中。
其示例界面如下:
1 add_meta_box
官方文档:https://developer.wordpress.org/reference/functions/add_meta_box/
函数形式
add_meta_box( string $id, string $title, callable $callback, string|array|WP_Screen $screen = null, string $context = 'advanced', string $priority = 'default', array $callback_args = null )
函数参数
- $id:字段id,唯一
- $title:meta_box的标题名称
- $callback:回调函数
- $post_type:需要添加的文章类型
- $context:显示位置,可选normal、side、advanced,默认为normal
- $priority:优先级,可选high、core、default,默认为default
2 添加自定义字段
按一下步骤,将下述的代码一步一步加入到主题的functions.php中。
2.1 创建所需要的字段信息
首先我们想要在文章新增三个自定义字段,分别是书籍作者、ISBN、价格。
数组第一个元素name为自定义字段的名称,在本代码中自定义字段的名称为name值加_value,以防止与其他代码发生冲突,如 _book_author_value;std为自定义字段的默认值,当你发表文章时该自定义字段没填任何值,那么将取默认值;title为自定义字段模块的标题,如文章编辑页的”摘要”、”分类”和”标签”,这些都是模块名称。
$new_meta_boxes = array(
"book_author" => array(
"name" => "_book_author",
"std" => "这里填作者",
"title" => "作者:"),
"book_isbn" => array(
"name" => "_book_isbn",
"std" => "这里填书的ISBN索引号",
"title" => "ISBN:"),
"book_price" => array(
"name" => "_book_price",
"std" => "这里填书的价格",
"title" => "价格:")
);
2.2 创建自定义字段输入框
以下代码将用于在文件编辑页面创建book的自定义meta_box与相关的输入框
function new_book_meta_boxes() {
global $post, $new_meta_boxes;
foreach($new_meta_boxes as $meta_box) {
$meta_box_value = get_post_meta($post->ID, $meta_box['name'].'_value', true);
if($meta_box_value == "")
$meta_box_value = $meta_box['std'];
// 自定义字段标题
echo'<h3>'.$meta_box['title'].'</h3>';
// 自定义字段输入框
echo '<textarea cols="60" rows="3" name="'.$meta_box['name'].'_value">'.$meta_box_value.'</textarea><br />';
}
echo '<input type="hidden" name="book_metaboxes_nonce" id="book_metaboxes_nonce" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />';
}
2.3 在文章页面创建自定义字段模块
function create_book_meta_box() {
if ( function_exists('add_meta_box') ) {
add_meta_box( 'book-meta-boxes', '书籍信息', 'new_book_meta_boxes', 'post', 'normal', 'high' );
}
}
add_action('admin_menu', 'create_book_meta_box');
2.4 保存自定义字段
function save_postdata( $post_id ) {
global $new_meta_boxes;
if ( !wp_verify_nonce( $_POST['book_metaboxes_nonce'], plugin_basename(__FILE__) ))
return;
// 用户权限验证
if ( !current_user_can( 'edit_posts', $post_id ))
return;
foreach($new_meta_boxes as $meta_box) {
$data = $_POST[$meta_box['name'].'_value'];
if($data == "")
delete_post_meta($post_id, $meta_box['name'].'_value', get_post_meta($post_id, $meta_box['name'].'_value', true));
else
update_post_meta($post_id, $meta_box['name'].'_value', $data);
}
}
add_action('save_post', 'save_postdata');
3 调用文章自定义字段
<?php
if (is_single())
{
$book_author = get_post_meta($post->ID, "_book_author_value", true);
$book_isbn = get_post_meta($post->ID, "_book_isbn_value", true);
$book_price = get_post_meta($post->ID, "_book_price_value", true);
}
?>
总结
本文以一个实际的例子对如何在WordPress中为文章添加自定义字段进行了详细的说明,这对于WordPress初学者和WordPress主题开发者还有有一定的帮助的。
参考链接
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:WordPress – 为文章添加自定义字段,在文章编辑页面增加编辑面板
原文链接:https://www.stubbornhuang.com/2630/
发布于:2023年05月25日 15:20:46
修改于:2023年05月25日 15:26:41
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
50