WedX - журнал о программировании и компьютерных науках

как проверить, существует ли сообщение по заголовку и типу сообщения

Я пытаюсь добавить новое сообщение в блоге, когда создается событие (пользовательский тип сообщения), и редактировать сообщение при обновлении события. До сих пор мне удавалось добавлять новый пост при создании события, но он также создает новый пост при сохранении события, поэтому мне нужно проверить, существует ли уже пост в блоге, прежде чем делать вставку. Я попробовал функцию post_exists(title), но затем она вообще перестала создавать сообщения, поэтому я думаю, что проблема в том, что мне нужен способ проверить, существует ли сообщение по определенному типу сообщения?

вот что у меня есть до сих пор:

 function create_event_post( $post_id ) {

    // If this is just a revision, don't create post.
    if ( wp_is_post_revision( $post_id ) )
        return;

    $post_title = get_the_title( $post_id );
    $post_type = get_post_type($post_id);
    $post_url = get_permalink( $post_id );
    $post_content = get_post_field('post_content', $post->ID);
    $featured_image_url = get_the_post_thumbnail_url($post_id, 'full');
    $author_id = get_post_field ('post_author', $post_id);
    $author_name = get_the_author_meta( 'display_name' , $author_id );  
    $slug = 'event';


// If the post is not "tribe_events", don't create a new post.  
    if ( "tribe_events" != $post_type ) 
        return;

    $post_id = post_exists( $my_title );
    if (!$post_id) {
        $post_id = wp_insert_post(
        array(
            'comment_status'    =>  'closed',
            'ping_status'       =>  'closed',
            'post_author'       =>  $author_id,
            'post_title'        =>  $post_title,
            'post_content'      =>  $post_content,
            'post_status'       =>  'publish',
            'post_type'     =>  'post'
        )
    );

}
add_action( 'save_post', 'create_event_post' );
05.03.2018

Ответы:


1

Я думаю, вам лучше использовать настраиваемое поле, чтобы проверить, я немного изменю ваш код

    $post_child_id = get_post_meta($post_id, 'child-post', true);
     if (!$post_child_id) {
        $post_child_id = wp_insert_post(
        array(
            'comment_status'    =>  'closed',
            'ping_status'       =>  'closed',
            'post_author'       =>  $author_id,
            'post_title'        =>  $post_title,
            'post_content'      =>  $post_content,
            'post_status'       =>  'publish',
            'post_type'     =>  'post'
        )

    );
  update_post_meta( $post_id, 'child-post', $post_child_id);
 }
05.03.2018
  • Благодарю вас! Это решило проблему добавления дубликатов сообщений. Теперь мне просто нужно знать, как обновить содержимое сообщения, если оно уже существует. 05.03.2018
  • вам нужно добавить пункт else и обновить все, что вы хотите 05.03.2018
  • я попытался добавить пункт else, как вы предложили, но я получаю 502 Bad Gateway, когда пытаюсь сохранить событие сейчас. вот что я добавил:else { $my_post = array( 'post_content' => $post_content ); wp_update_post( $my_post ); } 05.03.2018

  • 2

    Получил это работает сейчас. В итоге использовал функцию get_page_by_title() и передал ей "post" как тип сообщения, а затем проверил если бы он был пуст.

    Вот окончательное решение, которое я придумал:

    add_action( 'save_post', 'create_event_post' );
    
    function create_event_post( $post_id ) {
    
        // Set the title, thumbnail id, author, and content variables
        $post_title = get_the_title( $post_id );
        $post_type = get_post_type($post_id);
        $post_content = get_post_field('post_content', $post_id);
        $thumbnail_id = get_post_thumbnail_id( $post_id );
        $author_id = get_post_field ('post_author', $post_id);
    
        // If the post is not "tribe_events", don't create a new post.  
        if ( "tribe_events" != $post_type ) 
            return;
    
        $new_post = array(
                    'comment_status'    =>  'closed',
                    'ping_status'       =>  'closed',
                    'post_author'       =>  $author_id,
                    'post_title'        =>  $post_title,
                    'post_content'      =>  $post_content,
                    'post_status'       =>  'publish',
                    'post_type'     =>  'post'
                );
    
        remove_action( 'save_post', 'create_event_post' );
    
        $post_exists = get_page_by_title( $post_title, $output, "post" );
    
        if ( !empty($post_exists) ) {
            // Update post
            $update_post = array(
                'ID'           =>   $post_exists->ID,
                'post_title'   =>   $post_title,
                'post_content' =>   $post_content,
            );
    
            // Update the post into the database
            wp_update_post( $update_post );
            set_post_thumbnail( $post_exists->ID, $thumbnail_id );
        }
        else {
            // Create the new post and retrieve the id of the new post
            $new_post_id = wp_insert_post ( $new_post );
            // Set the featured image for the new post to the same image as event post 
            set_post_thumbnail( $new_post_id, $thumbnail_id );
        }           
    
        // Now hook the action
        add_action( 'save_post', 'create_event_post' );
    }
    
    06.03.2018
    Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]