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 ‘<label for="litpic_new_field">图片url </label>‘;
echo ‘<input type="text" id="litpic_new_field" name="litpic_new_field" value="‘.$date->litpic.‘" size="28" />‘;
// 多个字段依此类推
}

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字段的输入框,如图:

但此时 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 字段输出了。

原文地址:https://www.cnblogs.com/lijea/p/9252222.html

时间: 2024-10-16 05:53:57

wordpress添加文章固定字段的相关文章

wordpress添加文章阅读数量

将下面代码添加到functions.php 1 //取得文章的阅读次数 2 function post_views($before = '点击 ', $after = ' 次', $echo = 1) 3 { 4 global $post; 5 $post_ID = $post->ID; 6 $views = (int)get_post_meta($post_ID, 'views', true); 7 if ($echo) echo $before, number_format($views),

WordPress 后台添加额外选项字段到常规设置页面

有时候我们需要添加一些额外的设置选项到常规设置(后台 > 设置 > 常规)页面,下面是一个简单的范例: 直接添加到主题的 functions.php 即可: /*** WordPress 添加额外选项字段到常规设置页面* http://www.wpdaxue.com/add-field-to-general-settings-page.html*/$new_general_setting = new new_general_setting();class new_general_setting

为WordPress某个文章添加额外的样式

如需把css直接写在某文章,把下面代码放如function.php /* 为特定文章添加特定css最简单的方式. */ /*添加自定义CSS的meta box*/ add_action('admin_menu', 'cwp_add_my_custom_css_meta_box'); /*保存自定义CSS的内容*/ add_action('save_post', 'cwp_save_my_custom_css'); /*将自定义CSS添加到特定文章(适用于Wordpress中文章.页面.自定义文章

黄聪:在WordPress后台文章编辑器的上方或下方添加提示内容

WordPress 3.5 新增了一对非常有用的挂钩,可以快速在WordPress后台文章编辑器的上方或下方添加提示内容,下面是一个简单的例子,直接将代码添加到主题的 functions.php 文件: function below_the_title() { echo '<h3>在编辑器上方添加的提示内容</h3>'; }   add_action( 'edit_form_after_title', 'below_the_title' );   function below_th

WordPress主题制作教程10:添加文章类型插件Custom Post Type UI

下载 Custom Post Type UI>> 用Custom Post Type UI添加自定义文章类型对于新手来说最简单不过了,下载安装后,在插件栏启用一下,就可以开始添加文章类型了 添加后,可以看见左栏多了“产品”: 你还可以创建完类型后,在CPT UI菜单下的import/Export->Get Code的这段代码贴到functions.php中,这样不需要安装该插件也可以实现文章类型的定义.

ASP.NET MVC5 网站开发实践(二) Member区域 - 添加文章

转自:http://www.cnblogs.com/mzwhj/p/3592895.html 上次把架构做好了,这次做添加文章.添加文章涉及附件的上传管理及富文本编辑器的使用,早添加文章时一并实现. 要点: 富文本编辑器采用KindEditor.功能很强大,国人开发,LGPL开源,自己人的好东西没有理由不支持. 附件的上传同样基于KindEditor实现,可以上传图片,flash,影音,文件等. 目录 ASP.NET MVC5 网站开发实践 - 概述 ASP.NET MVC5 网站开发实践(一)

WordPress 后台文章列表设置文章特色图片(缩略图)集成版

functions.php添加以下代码 /** * WordPress 后台文章列表设置文章特色图片(缩略图)集成版 * Plugin Name: Easy Thumbnail Switcher */ class doocii_Easy_Thumbnail_Switcher { public $add_new_str; public $change_str; public $remove_str; public $upload_title; public $upload_add; public

改善用户体验之wordpress添加图片弹出层效果 (插件 FancyBox)

下面说说在改善用户体验之wordpress添加图片弹出层效果.效果图如下: 像这篇文章如何在百度搜索结果中显示网站站点logo? 文章内有添加图片,没加插件之前用户点击图片时,是直接_black打开新窗口到 图片地址,非常不友好,很不和谐!添加wordpress添加图片弹出层效果之后如上所示效果.逼格瞬间提高! 打造这个效果的这款插件名称是FancyBox for WordPress

WordPress 更改文章密码保护后显示的提示内容

WordPress 有一个密码保护功能,你可以在文章和页面的编辑界面看到设置选项: 设置了密码后,你就可以在前台看到如下提示内容: 本文的目的就是要修改这个提示内容,核心函数如下(添加到当前主题的 functions.php 即可): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 /** * WordPress 更改文章密码保护后显示的提示内容 * https://www.wpdaxue.com/change-