valu/wp-graphql-polylang

Polylang bindings for wp-graphql

Installs: 26 481

Dependents: 0

Suggesters: 0

Security: 0

Stars: 89

Watchers: 3

Forks: 14

Open Issues: 29

Type:wordpress-plugin


README

Extend WPGraphQL schema with language data from the Polylang plugin.

Features

For posts and terms (custom ones too!)

  • Adds language and translations fields
  • Filter with a language where argument
  • Set the language on create and update mutations
  • Show all translations in the api by default
    • Polylang patches the WP Query to only list items with the current default language. This plugin reverts that for the GraphQL api
  • ACF Options Pages support

Root queries

  • defaultLanguage get the current default language
  • languages list all configured languages

Menu

  • Filter menu items by language

For details please refer to the generated docs in GraphiQL.

Example

Example showing all features

query PolylangExample {
    # Filter pages by language. If not set it defaults to ALL
    pages(where: { language: EN }) {
        nodes {
            title

            # Get language of each page
            language {
                code # Language code
                name # Human readable name of the language
            }

            # Get links to the translates versions of each page
            # This is an array of post objects
            translations {
                title
                link
                language {
                    code
                }
            }
        }
    }

    # Taxonomies such as tags can be filtered like post objects
    tags(where: { language: EN }) {
        nodes {
            name
            language {
                code
                name
            }
        }
    }

    # Get translated version of a given menu
    menuItems(where: { language: EN, location: FOOTER_MENU }) {
        nodes {
            url
        }
    }

    # Get the default language
    defaultLanguage {
        name
        code
    }

    # Get all configured languages
    languages {
        name
        code
    }

    # Get translations for ACF Options Pages.
    # See the section in the README.
    siteSettings(language: EN) {
        siteSettings {
            footerTitle
        }
    }
}

Requirements

  • PHP 7.2 or later
  • WPGraphQL 0.13.x or later
  • Polylang 2.6.5 or later
    • The free version is enough
    • If you get the PRO version the pro features such as translated slugs will work too

Installation

If you use composer you can install it from Packagist

composer require valu/wp-graphql-polylang

Otherwise you can clone it from Github to your plugins using the stable branch

cd wp-content/plugins
git clone --branch stable https://github.com/valu-digital/wp-graphql-polylang.git

ACF Options Pages

In addition to WPGraphQL and Polylang plugins you'll need these plugins too

You can install the free plugins using Composer. You'll need to have the WordPress Packagist repository enabled.

composer require wp-graphql/wp-graphql-acf wpackagist-plugin/acf-options-for-polylang

When registering the Options Page you must pass in show_in_graphql and graphql_field_name arguments.

acf_add_options_page([
    'page_title' => __('Site settings', 'theme'),
    'menu_title' => __('Site settings', 'theme'),
    'menu_slug' => 'site-settings',
    'capability' => 'manage_options',
    'redirect' => false,
    'show_in_graphql' => true,
    'graphql_field_name' => 'siteSettings'
]);

Slack

You can find us from the WPGraphQL Slack on the #polylang channel.

WPML

But I'm using WPML?!

There's rburgst/wp-graphql-wpml.

Or you might want to checkout migration docs

https://polylang.pro/how-to-switch-from-wpml-to-polylang/

Contributing

Checkout CONTRIBUTING.md