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, обновлялись произвольные таксономии... но где и как, вторую ночь курю мануалы, не вижу, где ошибка или чего не хватает?

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

Спасибо.

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


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) На постоянную основу требуется рерайтер
1 Fleshka 384 Вчера, 1:01
автор: Julintuz
Открытая тема (нет новых ответов) Требуется помощь с woocommerce
1 gruz333 702 19.6.2018, 10:19
автор: WebKitchen
Открытая тема (нет новых ответов) Распродажа сайтов на Wordpress
12 tbr82 1200 18.6.2018, 23:36
автор: tbr82
Открытая тема (нет новых ответов) Верстка + натяжка на CMS WordPress, OpenCart
3 Chezarius 574 18.6.2018, 16:30
автор: Chezarius
Открытая тема (нет новых ответов) Требуется автор на сайт о гаджетах
0 log1n0v 284 18.6.2018, 16:05
автор: log1n0v


 



RSS Текстовая версия Сейчас: 21.6.2018, 12:36
Дизайн