1

由于缺乏更好的措辞,我有一个 wp 数据库功能。它对数据库和更新数据库执行标准插入。我需要使用 post-> ID 作为列。

在此处输入图像描述

我无法让它插入post->IDpost_id 所在的位置..这是函数...

add_action( 'admin_init', 'brash_add_settings' );

功能 brash_add_settings($post_id) {

     // Add slider
if(isset($_POST['submitted'])) {

    // Get WPDB Object
    global $wpdb;

    // Table name
    $table_name = $wpdb->prefix . "brash";

    // Create new record
    if($_POST['key'] == 0) {            

    // Execute query
        $wpdb->query(
            $wpdb->prepare("INSERT INTO $table_name
                                (post_id, name, data, date_c, date_m)
                            VALUES (%d, %s, %s, %d, %d)",
                            '',
                            '',
                            time(),
                            time()
                            )
        );

        // Empty slider
        $slider = array();

        // ID
        $id = mysqli_insert_id();
    } else {

        // Get slider
        $slider = $wpdb->get_row("SELECT * FROM $table_name ORDER BY id DESC LIMIT 1" , ARRAY_A);

        // ID
        $id = $slider['id'];

        $slider = json_decode($slider['data'], true);
    }


    // DB data
    $post = $post->ID;
    $name = $wpdb->escape($slider['properties']['backgroundimage']);
    $data = $wpdb->escape(json_encode($slider));

    // Update
    $wpdb->query("UPDATE $table_name SET
                post_id = '$post',
                name = '$name',
                data = '$data',
                date_m = '".time()."'
              ORDER BY id DESC LIMIT 1");

    // Echo last ID for redirect
    echo $id;

    die();
}



}

这里没有什么特别的,但我认为它没有得到 id 因为钩子可能是admin_init?我只是不知道在哪里可以找到将 id 发布到数据库的方法......

4

1 回答 1

0

在我的函数中使用是不可能的post->ID,但在我的表单中我可以回显,post->ID因为它在帖子的元框内。输入非常适合存储数据。

<div class="post-id">
 <input type="text" name="thepostid" value="<?php echo the_ID() ?>" id="someid">
</div>

我使用 jQuery 和 ajax 来获取数据,这是一个片段。

 jQuery('.post-id input').each(function() {

        // Save original name attr to element's data
        jQuery(this).data('name', jQuery(this).attr('name') );

        jQuery(this).attr('name', 'brash-post-id[postid]['+jQuery(this).attr('name')+']');
    }); 

将其添加到 ajax 的片段。

            // Data to send
            $data = $data.add( jQuery('.post-id').find('input') );

            // Post layer
            jQuery.ajax(jQuery(el).attr('action'), {
                type : 'POST',
                data : $data.serialize(),
                async : false,
                success : function(id)

然后在表单提交到数据库功能中使用它。

 //Changing the UPDATE query from op

 $slider['postid'] = $_POST['brash-post-id']['postid']; //This is added on


 // DB data 

    $post_id = $wpdb->escape($slider['postid']['thepostid']); //['thepostid'] is the name of the input
    $name = $wpdb->escape($slider['properties']['title']); // The title of an input field
    $data = $wpdb->escape(json_encode($slider)); // all of the data

    // Update
    //$slider['postid']['thepostid'] is inserted as $post_id, which is post->ID
    $wpdb->query("UPDATE $table_name SET
                post_id = '$post_id', 
                name = '$name',
                data = '$data',
                date_m = '".time()."'
              ORDER BY id DESC LIMIT 1");
于 2013-07-27T23:35:35.010 回答