在wordpress帖子中添加一个字段

时间:2015-01-02 18:41:25

标签: php mysql wordpress

我想在我的添加帖子中添加一个额外的字段, 我在wp_post中添加了一个可以是0或1的字段 然后我想在wordpress添加帖子或编辑帖子的发布框中添加复选框 在该字段为1时检查或在0时未选中 并且它应该在提交更新后保存

我知道我可以使用自定义字段模板,但问题是这些自定义字段会将值插入到wp_postmeta而不是wp_post中,并且我需要在同一个表中单个帖子的所有内容。

实际上我需要添加额外的字段来使用一个查询来检索转换为json所需的一些记录,而不是所有的帖子都读取,对于android和ios上的应用程序

3 个答案:

答案 0 :(得分:4)

首先,你不应该像很多人已经提到的那样修改核心表。您可以使用两个表中的连接进行选择:

 $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代替。

答案 1 :(得分:0)

我们有插件可以在帖子中添加自定义字段。

https://wordpress.org/plugins/advanced-custom-fields/

1.crete一个字段

2.分配发布

答案 2 :(得分:-1)

最好的解决方案是Relwis的Meta Box插件。你可以使用它。 Source link