11 个不稳定版本 (3 个破坏性更新)
0.4.1 | 2023年9月27日 |
---|---|
0.4.0 | 2023年9月27日 |
0.3.1 | 2023年9月26日 |
0.2.5 | 2023年9月5日 |
0.1.5 | 2023年8月25日 |
#2 in #wordpress
每月下载量:109
115KB
3K SLoC
wp_query_rs
在 WordPress 环境之外访问 WordPress 文章的经典 WP_Query 工具的 Rust 实现。
示例
如果您已设置环境变量(如下所述),则可以使用新功能查询,类似于 WP_Query 实例创建。
use wp_query_rs::{WP_Query, ParamBuilder};
let params = ParamBuilder::new();
let wp_query = WP_Query::new(params.params()).expect("SqlFailed");
assert_eq!(wp_query.post_count(), 10);
使用首选方法应从您的连接池提供连接
let params = ParamBuilder::new();
let mut con: mysql::Conn = pool.get_connection();
let wp_query = WP_Query::with_connection(&mut conn, params.params()).expect("SqlFailed");
assert_eq!(wp_query.post_count(), 10);
构建查询参数
要将参数添加到查询中,请在 ParamBuilder::new()
之后链式调用回调函数
let params = ParamBuilder::new().posts_per_page(2).page(3);
链式调用的顺序无关紧要。
恐慌!
如果提供非法日期参数,参数构建器将引发恐慌
let params = ParamBuilder::new()
.year(2023)
.monthnum(1)
.day(1)
.hour(4)
.minute(23)
.second(61); // Panics!
插入文章
此包还可以用于将文章插入到 WordPress 中。此功能使用此包启动的默认连接池。
let mut post = WP_Post::new(1);
let title = "My Test Post".to_string();
post.post_title = title.clone();
let post_id: u64 = post.insert().expect("InsertFailed");
读取和写入元数据
您还可以读取和写入元数据。
let post_id: u64 = post.insert().expect("InsertFailed");
add_post_meta(post_id, "my_custom_rs_meta", 42).expect("MetaInsertFailed");
let meta = get_post_meta(post_id, "my_custom_rs_meta", true);
match meta {
WpMetaResults::Single(meta) => {
assert_eq!(meta.meta_value, "42")
}
_ => unreachable!("MetaQueryFailed"),
}
读取 WP 用户数据
您还可以使用 WpUser
从数据库加载 WP 用户数据。
let user = WpUser::get_user_by_id(1).unwrap().unwrap();
assert_eq!(user.id, 1);
目标
此包的作者希望为 Rust 社区添加与 WordPress 网站和数据一起工作的工具。在将来,甚至可能使用 Rust 编写 WordPress 扩展以提高性能。
构建此库本身主要是作者的教育目的。如果对这类软件感兴趣,我将很高兴与其他人合作改进。
参考
此包中的公共 API 主要模拟原始 WP_Query 的功能。您可以通过其文档了解更多信息。
https://developer.wordpress.org/reference/classes/wp_query/#date-parameters
许可证
- Apache License,版本 2.0 (LICENSE_APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE_MIT 或 http://opensource.org/licenses/MIT)
依赖项
~14–28MB
~465K SLoC