当前位置: 首页>>建站开发>>正文


WP插入PHP函数和自定义字段

webfans 建站开发 , , , , 去评论

问题描述

WordPress函数用于以编程方式提交数据。要提交的标准字段包括内容,摘录,标题,日期等等。

什么没有文档是如何提交到自定义字段。我知道add_post_meta($post_id, $meta_key, $meta_value, $unique);功能是可行的。

但是,如何将其纳入标准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',
  );
  wp_insert_post( $my_post );
  ?>

最佳解决方案

如果您阅读了wp_insert_post的文档,它将返回您刚刚创建的帖子的帖子ID。

如果你将它与以下功能__update_post_meta(我从这个站点获得的一个自定义功能并进行了一些调整)相结合

/**
  * Updates post meta for a post. It also automatically deletes or adds the value to field_name if specified
  *
  * @access     protected
  * @param      integer     The post ID for the post we're updating
  * @param      string      The field we're updating/adding/deleting
  * @param      string      [Optional] The value to update/add for field_name. If left blank, data will be deleted.
  * @return     void
  */
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' );

次佳解决方案

您可以在’wp_insert_post’之后简单添加’add_post_meta’

<?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);
?>

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/2767.html,转载请务必附带本地址声明。