首先,你不应该修改核心表,因为很多人已经提到过。你可以做一个选择使用从这样的两个表联接:
$querystr = "
SELECT $wpdb->posts.*
FROM $wpdb->posts, $wpdb->postmeta
WHERE $wpdb->posts.ID = $wpdb->postmeta.post_id
AND $wpdb->postmeta.meta_key = 'tag'
AND $wpdb->postmeta.meta_value = 'email'
AND $wpdb->posts.post_status = 'publish'
AND $wpdb->posts.post_type = 'post'
AND $wpdb->posts.post_date < NOW()
ORDER BY $wpdb->posts.post_date DESC
";
$pageposts = $wpdb->get_results($querystr, OBJECT);
更多在这里:http://codex.wordpress.org/Displaying_Posts_Using_a_Custom_Select_Query比
其他,究竟是什么问题了吗?要显示自定义复选框,您可以使用add_meta_box函数。要更新它,你需要你的函数的数据添加到wp_insert_post_data
钩,然后插入到数据库中,这样的事情:
add_filter('wp_insert_post_data', 'so27747402_save_data');
function so27747402_save_data($post_san){
global $wpdb;
global $post;
$checkbox = (isset($_POST['so27747402_checkbox']) && $_POST['so27747402_checkbox'] == 1);
update_post_meta($post->ID, '_so27747402_checkbox', $checkbox);
return $post_san;
}
或类似的,如果你坚持通过更改核心表做:
add_filter('wp_insert_post_data', 'so27747402_save_data');
function so27747402_save_data($post_san){
global $wpdb;
global $post;
$checkbox = (isset($_POST['so27747402_checkbox']) && $_POST['so27747402_checkbox'] == 1);
$wpdb->query("UPDATE $wpdb->posts SET checkbox = $checkbox WHERE ID = $post->ID");
return $post_san;
}
但是,这是一个非常糟糕的方式。您应该使用update_post_meta
。
你真的不应该修改核心的WordPress表 - 你应该使用的自定义字段模板。 –
我知道,但我必须在表格 –
中增加一个额外的字段为什么?这听起来像XY问题。 –