将post-> ID添加到wordpress函数中?

时间:2013-07-27 07:02:56

标签: php wordpress

我有一个wp数据库函数缺乏更好的措辞。它对数据库和UPDATE数据库执行标准INSERT。我需要使用post-> ID作为列。

enter image description here

我无法插入post->ID,其中post_id是..这里是函数...

add_action( 'admin_init', 'brash_add_settings' );

function 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发布到数据库方面的位置...

1 个答案:

答案 0 :(得分: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");