自定义了一个字段__在wp_posts数据表中

//自定义了一个字段__在wp_posts数据表中 J_cat_index  用于存放分类别名

// Define the custom box,适用WP 3.0以后的版本 //

//add_action('add_meta_boxes', 'J_add_custom_box');

add_action( 'add_meta_boxes', 'J_add_custom_box' );

 

// 如果是WP 3.0之前的版本,使用以下一行代码

// add_action( 'admin_init', 'J_add_custom_box', 1 );

 

// Do something with the data entered //

add_action( 'save_post', 'J_save_postdata' );

 

/* Adds a box to the main column on the Post and Page edit screens */

function J_add_custom_box() {

add_meta_box(

'J_cat_id',

'分类别名', // 可自行修改标题文字

'J_inner_custom_box',

'post'

);

}

 

/* Prints the box content */

function J_inner_custom_box( $post ) {

global $wpdb;

 

// Use nonce for verification

wp_nonce_field( plugin_basename( __FILE__ ), 'J_noncename' );

 

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

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

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

 

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

echo '<label for="J_new_field">J_cat_index</label> ';

echo '<input type="text" id="J_new_field" name="J_new_field" value="'.$date->J_cat_index.'" size="18" />';

 

// description 字段输入框的HTML代码,即复制以上两行代码,并将keywords该成description

//echo '<label for="description_new_field">Description</label> ';

//echo '<input type="text" id="description_new_field" name="description_new_field" value="'.$date->description.'" size="18" />';

// 多个字段依此类推

}

 

/* 文章提交更新后,保存固定字段的值 */

function J_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['J_noncename'], plugin_basename( __FILE__ ) ) )

return;

 

// 权限验证

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

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

return;

}

 

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

$Jcatindex = $_POST['J_new_field'];

//$description = $_POST['description_new_field'];

 

// 更新数据库,此处wp_posts新添加的字段为keywords和description,多个根据你的情况修改

global $wpdb;

$wpdb->update( "$wpdb->posts",

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

//array( 'keywords' => $keywords, 'description' => $description ),

array( 'J_cat_index' => $Jcatindex),

array( 'ID' => $post_id ),

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

//array( '%s', '%s' ),

array( '%s'),

array( '%d' )

);

}

 

以下为参考内容

$return = $wpdb->update( $wpdb->posts, array('post_type' => $post_type), array('ID' => $post_id) );

 $value = apply_filters( "post_{$field}", $value, $post_id, $context );

 

sanitize_post_field

Add_filter ('post_{$field}', save ,10 ,2)

 

代码段

/**

 * Update a post with new post data.

 *

 * The date does not have to be set for drafts. You can set the date and it will

 * not be overridden.

 *

 * @since 1.0.0

 *

 * @param array|object $postarr  Optional. Post data. Arrays are expected to be escaped,

 *                               objects are not. Default array.

 * @param bool         $wp_error Optional. Allow return of WP_Error on failure. Default false.

 * @return int|WP_Error The value 0 or WP_Error on failure. The post ID on success.

 */

function wp_update_post$postarr = array(), $wp_error = false ) {

        if ( is_object($postarr) ) {

                // Non-escaped post was passed.

                $postarr = get_object_vars($postarr);

                $postarr = wp_slash($postarr);

        }

        // First, get all of the original fields.

        $post = get_post($postarr['ID'], ARRAY_A);

        if ( is_null$post ) ) {

                if ( $wp_error )

                        return new WP_Error( 'invalid_post', __( 'Invalid post ID.' ) );

                return 0;

        }

        // Escape data pulled from DB.

        $post = wp_slash($post);

        // Passed post category list overwrites existing category list if not empty.

        if ( isset($postarr['post_category']) && is_array($postarr['post_category'])

                         && 0 != count($postarr['post_category']) )

                $post_cats = $postarr['post_category'];

        else

                $post_cats = $post['post_category'];

        // Drafts shouldn't be assigned a date unless explicitly done so by the user.

        if ( isset$post['post_status'] ) && in_array($post['post_status'], array('draft''pending''auto-draft')) && empty($postarr['edit_date']) &&

                         ('0000-00-00 00:00:00' == $post['post_date_gmt']) )

                $clear_date = true;

        else

                $clear_date = false;

        // Merge old and new fields with new fields overwriting old ones.

        $postarr = array_merge($post$postarr);

        $postarr['post_category'= $post_cats;

        if ( $clear_date ) {

                $postarr['post_date'= current_time('mysql');

                $postarr['post_date_gmt'= '';

        }

        if ($postarr['post_type'== 'attachment')

                return wp_insert_attachment($postarr);

        return wp_insert_post( $postarr$wp_error );

}

/**

 * Publish a post by transitioning the post status.

 *

 * @since 2.1.0

 *

 * @global wpdb $wpdb WordPress database abstraction object.

 *

 * @param int|WP_Post $post Post ID or post object.

 */

function wp_publish_post$post ) {

        global $wpdb;

        if ( ! $post = get_post( $post ) )

                return;

        if ( 'publish' == $post->post_status )

                return;

        $wpdb->update$wpdb->postsarray'post_status' => 'publish' ), array'ID' => $post->ID ) );

        clean_post_cache( $post->ID );

        $old_status = $post->post_status;

        $post->post_status = 'publish';

        wp_transition_post_status( 'publish'$old_status$post );

        /** This action is documented in wp-includes/post.php */

        do_action( 'edit_post'$post->ID$post );

        /** This action is documented in wp-includes/post.php */

        do_action( "save_post_{$post->post_type}"$post->ID$posttrue );

        /** This action is documented in wp-includes/post.php */

        do_action( 'save_post'$post->ID$posttrue );

        /** This action is documented in wp-includes/post.php */

        do_action( 'wp_insert_post'$post->ID$posttrue );

}

发表新评论
Gravatar图片显示区