wp 新增字段php,wordpress添加文章固定字段的介绍

本文详细介绍了如何在WordPress中为文章表增加litpic字段,允许用户在编辑时输入缩略图,并通过API获取。步骤包括添加meta_box、保存数据及调整REST API响应。适合开发者学习定制WordPress文章结构。
摘要由CSDN通过智能技术生成

这篇文章主要介绍了关于wordpress添加文章固定字段的介绍,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

让wordpress的文章数据表 增加一个字段,使其能在文章编辑页能编辑,并能通过rest api 获取出来。

例:给文章加一个缩略图字段 litpic

首先 通过mysql 给文章表 wp_posts 加一个字段 litpic

然后在主题的function.php 后面添加如下代码:

add_action( 'add_meta_boxes', 'myplugin_add_custom_box');

add_action( 'save_post', 'myplugin_save_postdata');function myplugin_add_custom_box() {

add_meta_box('myplugin_sectionid',

'设置缩略图', // 可自行修改标题文字

'myplugin_inner_custom_box',

'post');

}function myplugin_inner_custom_box( $post ) {

global $wpdb;

// Use nonce for verification

wp_nonce_field( plugin_basename( __FILE__ ),

'myplugin_noncename' );

// 获取固定字段litpic的值,用于显示之前保存的值

// 此处wp_posts新添加的字段为litpic,多个用半角逗号隔开

$date = $wpdb->get_row( $wpdb->prepare( "SELECT litpic FROM $wpdb->posts WHERE ID = %d", $post->ID) );

// litpic 字段输入框的HTML代码

echo '图片url ';

echo '';

// 多个字段依此类推

}

function myplugin_save_postdata( $post_id ) {

// verify if this is an auto save routine.

// If it is our form has not been submitted, so we dont want to do anything

if ( defined( ’DOING_AUTOSAVE’ ) && DOING_AUTOSAVE )return;

// verify this came from the our screen and with proper authorization,

// because save_post can be triggered at other times

if ( !wp_verify_nonce( $_POST['myplugin_noncename'], plugin_basename( __FILE__ ) ) )return;

// 权限验证

if ( 'post' == $_POST['post_type'] ) {

if ( !current_user_can( 'edit_post', $post_id ) )return;

}

// 获取编写文章时填写的固定字段的值,多个字段依此类推

$litpic = $_POST['litpic_new_field'];global $wpdb;$wpdb->update( "$wpdb->posts",

// 以下一行代码,多个字段的话参照下面的写法,单引号中是字段名,右边是变量值。半角逗号隔开

array( 'litpic' => $litpic),

array( 'ID' => $post_id ),

// 添加了多少个新字段就写多少个%s,半角逗号隔开

array( '%s'),

array( '%d')

);

}

添加后,文章页会显示litpic字段的输入框,如图:

d3fc637a055ef0fdfa692227ea534faa.png

但此时 rest api还不会把litpic字段输出。

打开 /wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php 文件。

添加如下代码:

if ( ! empty( $schema['properties']['litpic'] ) ) {

$data['litpic'] = $post->litpic;

}

'litpic' => array(

'description' => __( 'A litpic to protect access to the content and excerpt.' ),

'type' => 'string',

'context' => array( 'view', 'edit', 'embed' ),

),

$post_type_attributes = array( 'title',

'editor',

'author',

'excerpt',

'thumbnail',

'comments',

'revisions',

'page-attributes',

'post-formats',

'custom-fields',

'litpic',

); $fixed_schemas = array( 'post' => array( 'title',

'editor',

'author',

'excerpt',

'thumbnail',

'comments',

'revisions',

'post-formats',

'custom-fields',

'litpic',

),

case 'litpic':

$schema['properties']['litpic'] = array(

'description' => __( 'The ID for the litpic of the object.' ),

'type' => 'string',

'context' => array( 'view', 'edit', 'embed' ),

); break;

现在,rest api 就可以把litpic 字段输出了。

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值