我有一个wp数据库函数缺乏更好的措辞。它对数据库和UPDATE数据库执行标准INSERT。我需要使用post-> ID作为列。
我无法插入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发布到数据库方面的位置...
答案 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");