2013-07-27 35 views
1

我有一個wp數據庫功能缺乏更好的措辭。它執行數據庫和UPDATE數據庫的標準INSERT。我需要使用post-> ID作爲列。添加post-> ID到WordPress的功能?

enter image description here

我不能讓它插入post->ID其中POST_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到發佈到數據庫......

+0

是否希望在準備聲明中有五個佔位符但只有四個實際值? '$ post'從哪裏來? –

+0

我實際上找到了一個解決方案,我將帖子ID存儲到一個表單中,然後當它提交的值填充post_id列時..很快用我的解決方案更新這個問題,我需要趕上午睡.. –

回答

0

這是不可能在我的函數內使用post->ID,但在我的表單內我可以回顯post->ID,因爲它是在一個metabox在帖子上。輸入非常適合存儲數據。

<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");