hsimah-services/wp-graphql-metabox

WPGraphQL integration for Metabox

0.4.0 2021-01-04 21:44 UTC

This package is auto-updated.

Last update: 2024-05-11 04:06:51 UTC


README

Quick Install

Download and install like any WordPress plugin.

Documentation

The WPGraphQL documentation can be found here.

  • Requires PHP 7.3+
  • Requires WordPress 5.4+
  • Requires WPGraphQL 1.1.3+
  • Requires Meta Box 5.3.8+
    • Requires MB User Meta extension for User fields

Overview

This plugin provides an integration for Meta Box and WPGraphQL.

By simply adding an extra graphql_name property to the field registration the field will be exposed in the GraphQL schema.

Usage:

This assume you know how to expose custom post types in WPGraphQL - read their documentation for further info.

Using Meta Box, define a custom field. Copy and paste the generated code to your functions.php (or where ever you store your custom code).

wp-graphql-metabox options

option type effect
graphql_name string adds the field to the GraphQL object(s) identified in post_types
graphql_mutate boolean adds the field to the GraphQL object(s) create and update mutation input

Add in the graphql_name to the field definition:

$meta_boxes[] = [
    'title' => 'Extra Fields',
    'id' => 'extra-fields',
    'post_types' => [
        0 => 'post',
    ],
    'context' => 'after_title',
    'priority' => 'high',
    'autosave' => true,
    'fields' => [
        [
            'id' => 'a_random_number',
            'name' => 'A Random Number',
            'type' => 'number',
            'std' => 5,
            'columns' => 2,
            'size' => 3,
            'graphql_name' => 'randomNumber',
            'graphql_mutate' => true
        ],
    ],
];

That's it. The field randomNumber will be exposed on the type post. This will work for any custom post types you may create.

NB: You must expose custom types by adding show_in_graphql to the configuration of the CPT.

A simple query might look like this:

query {
    posts {
        nodes {
            title
            content
            randomNumber
        }
    }
}

Limitations

Currently the plugin only supports custom fields on post and user types (ie no Settings Pages).

Currently the plugin only supports using the following Meta Box types:

  • taxonomy
  • taxonomy_advanced
  • switch
  • checkbox
  • checkbox_list
  • background
  • color
  • custom_html
  • date
  • heading
  • datetime
  • oembed
  • password
  • radio
  • textarea
  • time
  • select
  • email
  • tel
  • text
  • url
  • wysiwyg
  • fieldset_text
  • select_advanced
  • text_list
  • key_value
  • number
  • range
  • single_image
  • user
  • post
  • group If you require a field which is not supported please feel free to submit an issue (or better yet, a PR!)