
Security News
npm Adopts OIDC for Trusted Publishing in CI/CD Workflows
npm now supports Trusted Publishing with OIDC, enabling secure package publishing directly from CI/CD workflows without relying on long-lived tokens.
@public-function/wp
Advanced tools
A thin drizzle based orm layer for the WordPress database.
Because sometimes performance matters!
Most of the time it is totally fine to use the wp-rest api. But when performance matters you do not want to spin up a WordPress stack just to query some data in the database. Especially if you have direct access to the database in your node setup.
Things will eventually change on the way to 1.0.
Breaking Changes:
- 0.4.0 single argument constructor
Install packages.
npm i @public-function/wp drizzle-orm mysql2
Initialize the database connection.
import mysql from 'mysql2/promise';
import connect from '@public-function/wp';
const pool = mysql.createPool({
host: process.env.HOST,
user: process.env.DB_USER,
database: process.env.DB_NAME,
password: process.env.DB_PASSWORD,
});
const wp = connect({
db:{
client: pool,
prefix: "wp_"
}
});
Get typesafe results via drizzle schema objects.
const siteUrl = (
await db
.select()
.from(wp.options)
.where(eq(wp.options.name, "siteurl"))
)[0];
or even simpler with the wrapper function.
import {getOption} from '@public-function/wp';
const siteUrl = await getOption(wp, "siteurl");
All default wordpress tables are defined:
Use hydration functions to easily collect meta or term data.
import {
hydratePostsWithMeta,
hydratePostWithTerms,
hydratePosts,
} from "@pubic-function/wp";
const posts = await wp.db.select().from(wp.posts);
const postsWithTerms = await hydratePostWithTerms(wp, posts);
const postsWithMeta = await hydratePostsWithMeta(wp, posts);
const postsWithTermsAndMeta = await hydratePosts(wp, posts);
import {hydrateCommentsWithMeta} from "@pubic-function/wp";
const comments = await wp.db.select().from(wp.comments);
const commentsWithMeta = await hydrateCommentsWithMeta(wp, comments);
import {hydrateUsersWithMeta} from "@pubic-function/wp";
const users = await wp.db.select().from(wp.users);
const usersWithMeta = await hydrateUsersWithMeta(wp, users);
import {hydrateTermsWithMeta} from "@pubic-function/wp";
const terms = await wp.db.select().from(wp.terms);
const termsWithMeta = await hydrateTermsWithMeta(wp, terms);
There are some query functions for typical use cases like loading posts in a WP_Query like manner. All results are automatically hydrated with meta and term data.
import {queryPosts} from "@pubic-function/wp";
const posts = await queryPosts(wp, {
});
import {queryComments} from "@pubic-function/wp";
const comments = await queryComments(wp, {
});
import {queryUsers} from "@pubic-function/wp";
const users = await queryUsers(wp, {
});
import {queryTerms} from "@pubic-function/wp";
const terms = await queryTerms(wp, {
});
import {getMenu} from "@pubic-function/wp";
const menu = await getMenu(wp, "menu-1");
import {getOption} from '@public-function/wp';
const siteUrl = await getOption(wp, "siteurl");
Start the WordPress docker container:
docker compose up -d
Run tests:
npm run test
FAQs
Thin drizzle orm layer for wordpress.
The npm package @public-function/wp receives a total of 15 weekly downloads. As such, @public-function/wp popularity was classified as not popular.
We found that @public-function/wp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
npm now supports Trusted Publishing with OIDC, enabling secure package publishing directly from CI/CD workflows without relying on long-lived tokens.
Research
/Security News
A RubyGems malware campaign used 60 malicious packages posing as automation tools to steal credentials from social media and marketing tool users.
Security News
The CNA Scorecard ranks CVE issuers by data completeness, revealing major gaps in patch info and software identifiers across thousands of vulnerabilities.