2015-01-02 57 views
2

我想添加一個額外的字段在我的添加帖子, 我添加了一個字段wp_post可以是0或1 然後我想添加複選框到發佈框中的WordPress添加帖子或編輯後 即當檢查該字段爲1或取消選中時0 ,也應該可以保存提交更新後添加字段到wordpress帖子

我知道,我可以使用自定義字段模板,但問題是,這些自定義字段中插入值轉換爲wp_postmeta而不是wp_post,並且我需要在同一個表中的單個文章的所有內容。

其實我需要添加額外的字段使用取回一些記錄,我需要轉換成JSON和查詢中的閱讀不是所有的帖子,應用在Android和iOS

+1

你真的不應該修改核心的WordPress表 - 你應該使用的自定義字段模板。 –

+0

我知道,但我必須在表格 –

+0

中增加一個額外的字段爲什麼?這聽起來像XY問題。 –

回答

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

最好的解決是Relwis的元Box插件爲此。你可以使用它。 Source link

相關問題