программно вставить дочерний пост в Wordpress - PullRequest
4 голосов
/ 10 февраля 2011

Мне нужно программно создать пост (или страницу) для каждого поста Wordpress, созданного или обновленного пользователем через панель инструментов.Я добавил хук

add_action( 'publish_post', 'create_details_page');

Автоматическое сообщение создается, только если пользователь создает или обновляет сообщение в определенной категории, а автоматическое сообщение создается в другой категории.Каждый пост относится только к одной категории.Создайте сообщение следующим образом:

        $auto_post = array(
                'comment_status' => 'closed',
                'post_category' => array($category->term_id),
                'post_author' => $latest_post[0]->post_author,
                'post_type' => 'post',
                'post_title' => 'Details for ' . $latest_post[0]->post_title,
                'post_parent' => $latest_post[0]->ID,
                'post_content' => 'Post content'
        );
        $auto_post_id = wp_insert_post ( $auto_post, true );
        $details = get_post( $auto_post_id );
        wp_publish_post( $auto_post_id );

Результаты противоречивы: иногда я получаю одно автоматическое сообщение, иногда два, а иногда ни одного.Почему и как вставить сообщение ровно один раз?

Чтобы получить автоматическую публикацию как дочернюю запись созданной пользователем записи:

$args = array(
        'post_type' => 'post',
        'post_parent' => $parent_post_id,
        'post_status' => 'publish'
        /* 'category_name' => array('Auto Post Category') */
);
$children = get_posts( $args );

Добавление параметра category_name приводит к тому, что дочерние записи не извлекаютсясовсем.Без параметра категории возвращаются дочерние записи, и у них есть свойство набора категорий.Тем не менее, кажется, что не полный список извлекается, и результаты варьируются от запуска к запуску.

Если содержимое автоматической публикации затем редактируется с панели инструментов, эта отредактированная запись не возвращается по вышеуказанному запросу.Почему?

Есть какие-нибудь предложения о том, как устранить противоречивое поведение и заставить это работать?Я новичок в Wordpress, и онлайн-справка немногочисленна и в основном предназначена для пользователей панели мониторинга.

Использование Wordpress 3.0.4, php5.

1 Ответ

0 голосов
/ 05 февраля 2013

Проверьте документацию - get_posts () принимает аргумент category, который является идентификатором категории.Аргумент category_name используется в другой функции, query_posts().

Чтобы найти идентификатор категории, наведите указатель мыши на ссылку в бэкэнде категорий WP.

...