@beeanco/wp-typeorm

TypeORM definitions for WordPress

Documentation

Installation

With node.js installed, use npm to install this package and its peer dependencies:

npm install @beeanco/wp-typeorm typeorm

You also need a MySQL package: You can use both mysql and mysql2, we recommend (and test with) the latter:

npm install mysql2 # or mysql

Usage

Setting up a connection

import { createConnection } from 'typeorm';
import { entities } from '@beeanco/wp-typeorm';

export function connect() {
  return createConnection({
    type: 'mysql',
    database: 'wordpress',
    username: 'myusername',
    password: 'mypassword',
    entities: [
      ...entities, // Add WordPress entities
      // Your own entities come here...
    ],
    synchronize: false,
    entityPrefix: 'wp_',
  });
}

// Now, call connect() somewhere to create database connection, e.g. in your server file

Getting posts

import { getRepository } from 'typeorm';
import { Post } from '@beeanco/wp-typeorm';

export async function runSample() {
  // Get the post repository
  const postRepository = await getRepository(Post);

  // Get a single post by id
  const byId = await postRepository.findOne(123);

  // Get the same post, but include metadata and terms this time
  const withMeta = await postRepository.findOne({
    where: { id: 123 },
    relations: ['parent', 'author', 'meta', 'terms', 'terms.taxonomy', 'terms.taxonomy.term'],
  });

  // Get all posts of type 'product' (e.g. WooCommerce)
  const allProducts = await postRepository.find({ where: { type: 'product' } });
}

// This sample could be called like this:
runSample().catch((error) => {
  console.error(error);
  process.exitCode = 1;
});

For all fields and relations, check the Post entity's source code.