我正在开发一个简单的联系表单的WordPress插件。但是我不知道如何将信息保存在数据库中?你能举出一些推荐人吗?
发布于 2017-03-07 15:21:52
Haninder的答案有一个很好的开始,但没有按照操作将数据存储在数据库中。
这就是它开始变得棘手的地方,因为有很多选择。
您可以轻松地将数据存储在不同的位置,但没有一个位置在语义上是正确的,也没有一个位置可以长期维护。
options表中的单个选项中的
function save_request( $data ){
$opts = get_option( 'contact_requests' );
if( ! $opts || ! is_array( $opts ) ){
$opts = array();
}
$opts[] = $data;
update_option( 'contact_requests', $opts );
}这将意味着缓慢的保存请求,并首先破坏数据库的意义,在数百个联系请求之后,部署和排序数据也将变得棘手。
最好的方法是拥有一个自定义的数据库表,但在走这条路时有很多需要考虑的问题。
https://code.tutsplus.com/tutorials/custom-database-tables-creating-the-table--wp-28124
自定义帖子类型
这就是我处理这个问题的方式。
也许你可以创建一个自定义的post类型,比如"contact_requests“,然后创建一个带有一些post元的post来表示一个联系请求。
通过这种方式,您已经在管理中获得了一个整洁的列表,并且可以根据需要快速轻松地对数据进行排序和访问。这将稳定而快速地处理数十万个条目。
function save_request( $data ){
$content = '';
foreach( $data as $key => $name ){
$content .= sprintf( '%s - %s' . PHP_EOL, $key, $name );
}
$post_data = array(
'post_title' => 'Contact Request ' . esc_html( $data['name'] ),
'post_content' => $content,
'post_type' => 'contact_requests'
);
$post_id = wp_insert_post( $post_data );
//Add Post Meta Here
add_post_meta( $post_id, 'contact_name', esc_html( $data['name'] ) );
add_post_meta( $post_id, 'contact_email', esc_html( $data['email'] ) );
add_post_meta( $post_id, 'contact_message', esc_html( $data['message'] ) );
return $post_id;
}https://stackoverflow.com/questions/42642002
复制相似问题