2015-01-02 2 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

Лучшим решить это Meta Relwis в Box для этого. Вы можете использовать его. Source link

Смежные вопросы