向 wordpress 添加一个字段 post
add a field to wordpress post
我正在尝试在我的添加 Post 中添加一个额外的字段,
我在 wp_post 中添加了一个可以是 0 或 1 的字段
然后我想将复选框添加到 wordpress 中的发布框中添加 post 或编辑 post
在该字段为 1 时检查或在 0 时未检查
而且应该可以在提交更新后保存
我知道我可以使用自定义字段模板,但问题是这些自定义字段将值插入 wp_postmeta 而不是 wp_post,我需要单个 [=] 的所有内容23=] 在同一个 table.
实际上我需要添加额外的字段以使用查询来检索我需要转换为 json 的一些记录并且读取它不是全部 posts,用于 [=20] 上的应用=] 和 ios
最好的解决办法是Relwis的Meta Box插件。你可以使用它。 Source link
首先,您不应该修改核心 table,正如很多人已经提到的那样。您可以使用来自两个 table 的连接来执行 select 操作:
$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;
}
或者如果你坚持通过更改核心来做到这一点,那么就像那样table:
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
。
我们有用于将自定义字段添加到 post 的插件。
https://wordpress.org/plugins/advanced-custom-fields/
1.crete一个字段
2.assign 到 post
我正在尝试在我的添加 Post 中添加一个额外的字段, 我在 wp_post 中添加了一个可以是 0 或 1 的字段 然后我想将复选框添加到 wordpress 中的发布框中添加 post 或编辑 post 在该字段为 1 时检查或在 0 时未检查 而且应该可以在提交更新后保存
我知道我可以使用自定义字段模板,但问题是这些自定义字段将值插入 wp_postmeta 而不是 wp_post,我需要单个 [=] 的所有内容23=] 在同一个 table.
实际上我需要添加额外的字段以使用查询来检索我需要转换为 json 的一些记录并且读取它不是全部 posts,用于 [=20] 上的应用=] 和 ios
最好的解决办法是Relwis的Meta Box插件。你可以使用它。 Source link
首先,您不应该修改核心 table,正如很多人已经提到的那样。您可以使用来自两个 table 的连接来执行 select 操作:
$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;
}
或者如果你坚持通过更改核心来做到这一点,那么就像那样table:
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
。
我们有用于将自定义字段添加到 post 的插件。
https://wordpress.org/plugins/advanced-custom-fields/
1.crete一个字段
2.assign 到 post