• 技术文章 >后端开发 >php教程

    wordpress添加文章固定字段的介绍

    不言不言2018-07-04 14:04:39原创1471
    这篇文章主要介绍了关于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 字段输出了。

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

    相关推荐:

    关于activemq stomp类代码

    关于Yii框架的增删改查

    以上就是wordpress添加文章固定字段的介绍的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    上一篇:laravel的目录结构 下一篇:PHP Excel导入数据到MySQL数据库的方法
    大前端线上培训班

    相关文章推荐

    • 带你分清类中的构造函数与析构函数• PHP中的命名空间定义与使用(实例详解)• PHP中clone关键字和__clone()方法的使用(实例详解)• 怎样去搞定PHP类的继承?(总结分享)• 五分钟带你了解PHP中的魔术方法(实例详解)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网