我正在为联系表单开发一个简单的WordPress插件。但我不知道如何将信息保存在数据库中?你能提供一些参考资料吗?
答案 0 :(得分:0)
Haninder的答案有一个很好的开始,但根据OP不会将数据存储在数据库中。
这是开始变得棘手的地方,因为有很多选择。
您可以轻松地将数据存储在不同的位置,但没有一个在语义上是正确的,或者可以在很长一段时间内维护。
在选项表中的单个选项中
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
自定义帖子类型
这就是我如何处理这个问题。
也许你可以创建一个自定义的帖子类型,比如" contact_requests"并使用一些post meta创建一个帖子来表示联系请求。
通过这种方式,您可以在管理员中获得整齐的列表,并可以根据需要快速轻松地对数据进行排序和访问。通过成千上万的条目,这将是稳定和快速的。
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;
}