フォームが送信された投稿の ID を追加しようとしているカスタム wp データベースがあります。
function add_custom_settings() {
if(isset($_POST['submitted'])) {
// Get WPDB Object
global $wpdb;
// Table name
$table_name = $wpdb->prefix . "custom";
// 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
$static = array();
// ID
$id = mysqli_insert_id();
// DB data
$post_id = the_ID();
$name = $wpdb->escape($static['properties']['title']);
$data = $wpdb->escape(json_encode($static));
// Update
$wpdb->query("UPDATE $table_name SET
post_id = '$post_id',
name = '$name',
data = '$data',
date_m = '".time()."'
ORDER BY id DESC LIMIT 1");
die();
}
}
クエリ内でthe_ID()
、post_id 列に挿入しようとしていることがわかります。IDは返されません。関数が投稿に関連付けられていないため、関数内ではなくthe_ID()
フォーム内でエコーが機能するためだと思います。
これを理解したら、ようやくこのことを機能させることができます...大変でした。誰かが助けてくれることを願っています!
フォームはかなり長いですが、ここにスニペットがあります..
<form action="<?php echo $_SERVER['REQUEST_URI']?>" method="post">
<input type="hidden" name="submitted" value="1"
//Form Data Here
<input type="submit" value="<?php the_ID(); ?>" />//echoing the ID here works..
</form>