X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

Открыть тему
Тема закрыта
> Требуется помощь в Wordpress, wp_insert_post, wp_set_object_terms
misnik
misnik
Topic Starter сообщение 10.10.2012, 13:56; Ответить: misnik
Сообщение #1


Участник
***

Группа: User
Сообщений: 199
Регистрация: 18.3.2010
Поблагодарили: 17 раз
Репутация:   -1  


Здравствуйте!
Требуется помощь по вводу данных в произвольный тип записей с front-end.

Создал произвольный тип записей:
// Регистрируем собственный тип записей property
function post_type_property() {
    register_post_type(
      'property',
      array('label' => __('Недвижимость'),
        'public' => true,
        'show_ui' => true,
        'has_archive' => true,
        'publicly_queryable' => true,
        'query_var' => true,  
        'rewrite' => true,  
        'capability_type' => 'post',
        'supports' => array('title', 'editor', 'thumbnail')
        )
      );


Создал произвольную таксономию для него:
// Регистрируем таксономию (город)
register_taxonomy( 'city', 'property',
        array(
    'hierarchical' => true,
             'label' => __('Город'),
             'query_var' => true,
             /*'hierarchical' => false,*/
             'rewrite' => array('slug' => 'city'),
             'update_count_callback' => 'update_term_taxonomy'
        )
    );

// Объявляем собственный тип записей
add_action('init', 'post_type_property');

// Функция обновления количества записей в таксономиях
function update_term_taxonomy($term,$taxonomy) {
  global $wpdb,$post;
  //in quick edit mode, $post is an array()
  //in full edit mode $post is an object
  if ( is_array( $post ))
    $posttype=$post['post_type'];
  else
    $posttype=$post->post_type;
  if ($posttype) {
    $DB_prefix=$wpdb->get_blog_prefix(BLOG_ID_CURRENT_SITE);
    $sql = "UPDATE ".$DB_prefix."term_taxonomy tt
          SET count =
          (SELECT count(p.ID) FROM  ".$DB_prefix."term_relationships tr
          LEFT JOIN ".$DB_prefix."posts p
          ON (p.ID = tr.object_id AND p.post_type = '".$posttype."' AND p.post_status = 'publish')
          WHERE tr.term_taxonomy_id = tt.term_taxonomy_id)
          WHERE tt.taxonomy = '".$taxonomy->name."'
      ";
    $wpdb->query($sql);
  }
}


В форме добавления записи с front-end (таксономия вводится из существующих значений путем выбора из dropdown) код добавления записи и таксономии:
if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) &&  $_POST['action'] == "add_property") {

    if (isset ($_POST['title'])) {
        $title =  $_POST['title'];
    } else {
        echo 'Введите наименование';
    }
    if (isset ($_POST['description'])) {
        $description = $_POST['description'];
    } else {
        echo 'Введите описание';
    }

    $city = $_POST['city'];


    $new_post = array(
        'post_title'    => $title,
        'post_content'  => $description,
        'post_type' => 'property',
        'post_status'   => 'pending',
        'post_author'   => 1
    );

    $pid = wp_insert_post($new_post);

    wp_set_object_terms( $pid, array($city), 'city', true);

    do_action('wp_insert_post', 'update_term_taxonomy');

    
    $link = get_permalink( $pid );
    wp_redirect( $link );
}


Все вводится, пост, название, таксономии... но вот у произвольных таксономий (которые были введены через админку) пропадает число записей, где эта таксономия есть.

Если новую запись, введенную через front-end опубликовать через админку, то число записей у таксономий восстанавливается, а до этого момента нет.

Понятно, что где-то нужно указать, чтобы при добавлении записи с front-end, обновлялись произвольные таксономии... но где и как, вторую ночь курю мануалы, не вижу, где ошибка или чего не хватает?

Подскажите, пожалуйста.

Спасибо.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Требуется хостинг
5 tiptopvkr 767 Сегодня, 12:59
автор: tiptopvkr
Открытая тема (нет новых ответов) Требуется почистить сайты от вирусов
6 Mukis 303 Вчера, 15:40
автор: qpPeW
Открытая тема (нет новых ответов) Требуется пригласить участников в группу
4 riut81 690 Вчера, 14:16
автор: riut81
Открытая тема (нет новых ответов) Как включить автоматическое обновление для плагинов WordPress и самого движка?
0 Telnor 342 Вчера, 13:27
автор: Telnor
Открытая тема (нет новых ответов) Требуется! Создать сайт обменника электронных/крипто валют
1 kalineo 321 8.12.2017, 16:07
автор: qpPeW


 



RSS Текстовая версия Сейчас: 11.12.2017, 13:45
Дизайн