Понравился вопрос? Нужен ответ? Поддержите проект
WPAsk
Ответов: 4
  1. Zack

    wp_insert_post вернет ID поста, который вы только что создали.

    Если вы объедините это со следующей функцией __update_post_meta :

    /**
      * Обновляет мета для поста. Он также автоматически удаляет или добавляет значение в field_name, если указано
      */
    public function __update_post_meta( $post_id, $field_name, $value = '' )
    {
        if ( empty( $value ) OR ! $value )
        {
            delete_post_meta( $post_id, $field_name );
        }
        elseif ( ! get_post_meta( $post_id, $field_name ) )
        {
            add_post_meta( $post_id, $field_name, $value );
        }
        else
        {
            update_post_meta( $post_id, $field_name, $value );
        }
    }
    

    Вы получите следующее:

    $my_post = array(
        'post_title' => $_SESSION['booking-form-title'],
        'post_date' => $_SESSION['cal_startdate'],
        'post_content' => 'This is my post.',
        'post_status' => 'publish',
        'post_type' => 'booking',
    );
    $the_post_id = wp_insert_post( $my_post );
    
    __update_post_meta( $the_post_id, 'my-custom-field', 'my_custom_field_value' );
    
  2. Philip

    Вы можете просто добавить add_post_meta после wp_insert_post

    <?php 
    $my_post = array(
         'post_title' => $_SESSION['booking-form-title'],
         'post_date' => $_SESSION['cal_startdate'],
         'post_content' => 'This is my post.',
         'post_status' => 'publish',
         'post_type' => 'booking',
      );
    
    $post_id = wp_insert_post($my_post);
    
    add_post_meta($post_id, 'META-KEY-1', 'META_VALUE-1', true);
    add_post_meta($post_id, 'META-KEY-2', 'META_VALUE-2', true);
    ?>
    
  3. Micah Ernst

    Используйте фильтр save_post , затем вызовите add_post_meta в своей функции фильтра.

  4. aendrew

    Я не думаю, что вы можете использовать его с wp_insert_post ();.

    Причина в том, что WP хранит два типа данных. Сообщения хранятся в одной большой монолитной таблице с дюжиной разных столбцов (wp_posts); настраиваемые поля хранятся в более простой таблице из 4 столбцов (wp_postmeta), состоящей в основном из мета-ключа и значения, связанного с публикацией.

    Следовательно, вы не можете хранить пользовательские поля, пока у вас нет идентификатора записи.

    Попробуйте это:

    function myplugin_insert_customs($pid){
    
        $customs = array(
        'post_id' => $pid,
        'meta_key' => 'Your meta key',
        'meta_value' => 'Your meta value',
        );
    
        add_post_meta($customs);
    
    }
    
    add_action('save_post', 'myplugin_insert_customs', 99);
    
Добавить ответ

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: