#wordpress #mysql #query-parameters #env-var #wp-query #wp #wp-post

wp_query_rs

在 WordPress 环境之外访问 WordPress 文章的经典 WP_Query 工具的 Rust 实现

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

Download history 1/week @ 2024-03-10 52/week @ 2024-03-31 24/week @ 2024-04-21 151/week @ 2024-04-28

每月下载量:109

MIT/Apache

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

许可证

依赖项

~14–28MB
~465K SLoC