devgeniem/wp-exhale

Creates Developer friendly xml api endpoint for 3rd party integrations on your data.

Installs: 830

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 10

Forks: 1

Open Issues: 2

Type:wordpress-muplugin

0.1.5 2016-12-01 13:00 UTC

This package is auto-updated.

Last update: 2024-10-20 15:49:34 UTC


README

Developer friendly framework for creating xml data exports from WordPress. This works only with php7.0 or better because we use scalar type hinting.

Install plugin

$ composer require devgeniem/wp-exhale
$ wp plugin activate wp-exhale

Usage

You need to define class which extends our parent class Exhale\Base\XML. This class is autocalled when suitable request comes and you don't need to hook it anywhere.

For example this could look like:

<?php
/**
 * This class exists so that users of Exhale can start producing xml really quickly
 */
class MyProviderName implements \Exhale\Type\XML {
    /**
     * Returns exportable apartments to Vuokraovi
     */
    static public function get_export_data() : array {
        return array('item' => 'value');
    }

    /**
     * If you need to wrap your data into custom element you can use this
     * Empty array is ignored
     */
    static public function xml_root_element() : array {
        return array(
            'name' => 'wrapper'
        );
    }

    /**
     * This function can be used to map custom namespaces into the xml
     * Empty array is ignored
     */
    static public function xml_namespaces() : array {
        return array(
            'http://www.w3.org/2001/XMLSchema-instance' => 'xsi',
        );
    }
}

This class now automatically provides custom data export from: http://yoursite.com/api/export/myprovidername.xml

With contents:

<wrapper xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <item>value</item>
</wrapper>

How it works?

This plugin uses sabre/xml inside. The array from get_export_data() function is mapped into xml write operation in sabre/xml. This way you get all the good things from sabre/xml as well.

If the exhale url is requested the XML is produced in plugins_loaded hook and then process is stopped immediately.

Settings

You can override default exporter url by defining in wp-config:

define('EXHALE_URL_PREFIX','/my-custom/api/url/');

The earlier example would now be accessible from: http://yoursite.com/api/export/myprovidername.xml

Special cases

If you want to add attributes to your elements or have multiple elements with same key you can do this with sabre/xml compatible custom arrays:

static public function get_export_data() {
        return array(
            [
                'name' => 'item',
                'attributes' => [
                    'url' => 'http://yoursite.com'
                ],
                'value' => 'value'
            ],
            [
                'name' => 'item',
                'attributes' => [
                    'url' => 'http://example.com'
                ],
                'value' => 'nothing'
            ],
        );
    }

This will produce following xml:

<item url="http://yoursite.com">value</item>
<item url="http://example.com">nothing</item>

License

GPLv3