wordpress_json 0.3.1
A thin wrapper for the Wordpress JSON API
License: MIT License
Keywords: wordpress json api

python-wordpress-json
=====================

.. image:: https://img.shields.io/travis/stylight/python-wordpress-json.svg
   :target:  https://travis-ci.org/stylight/python-wordpress-json

.. image:: https://img.shields.io/pypi/v/wordpress_json.svg
   :target:  https://pypi.python.org/pypi/wordpress_json

Super thin Python wrapper for the `Wordpress REST API V2 <http://v2.wp-api.org/>`_ developed by
`Stylight <http://www.stylight.com/>`_. Supports the documented read and write endpoints. Extensions and pull requests are encouraged and welcome.

Limitations:

* doesn't check input parameters
* returns a single dictionary or a list of dictionaries, depending on the API endpoint
* only supports basic auth, and it currently cannot be used without authentication

Dependencies:

* requests
* six

Installation
------------

::

    pip install wordpress-json

Before being able to use this package make sure you configure Wordpress properly.

Wordpress configuration
-----------------------

1. You need to install the WP-API Plugin. To do so:

   - Go to your Wordpress Dashboard
   - Click on Plugins in the left sidebar
   - Search for "REST API". Install the plugin named "WordPress REST API (Version 2)", by clicking on the "Install" button.
   - Activate the plugin on the next screen.

2. You need to install and activate the WP REST API Meta Endpoints plugin for the WP-API :

   - Click on Plugins in the left sidebar
   - Click on "Add New" on the top right, next to "Plugin"
   - Search for "WP REST API Meta Endpoints". Install the plugin named "WP REST API Meta Endpoints", by clicking on the  "Install" button.
   - Activate the plugin on the next screen.

3. You need to install and activate the Basic-Auth plugin for the WP-API :

   - download https://github.com/WP-API/Basic-Auth/archive/master.zip
   - Open your Wordpress Admin Dashboard
   - Click on Plugins in the left sidebar
   - Click on "Add New" on the top right, next to "Plugin"
   - Click on "Upload Plugin", Choose File, and select the file you downloaded at step 1 (master.zip)
   - Click on Install Now
   - Activate the plugin on the next screen.

4. Change permalink configuration to 'Post name' in Permalink Settings.

Usage
------------

.. code-block:: python

    >>> wp = WordpressJsonWrapper('http://example.com/wp-json/wp/v2', 'wp_user', 'wp_password')
    >>> posts = wp.get_posts()
    >>> posts[0].keys()
    dict_keys(['format', 'featured_media', 'author', ...])

    >>> posts[0].get('title')
    {'rendered': 'Tweetle Beetles'}

    >>> posts[0].get('content')
    {'rendered': '<p>What do you know about tweetle beetles? ...'}

    >>> posts[0].get('id')
    42

    >>> wp.create_meta(post_id=42, data=dict(key='genre', value='fanciful'))

    >>> meta = wp.get_meta(post_id=42)
    >>> meta[0].get('key')
    'genre'

    >>> meta[0].get('value')
    'fanciful'


.. :changelog:

Release History
---------------

0.3.1 (2017-02-22)
++++++++++++++++++

**Documentation**

- Fix changelog

0.3.0 (2017-02-22)
++++++++++++++++++

**New Features**

- Support non-JSON data in requests

**Behavioural Changes**

- Use POST instead of PUT for update requests. This may not work with Wordpress
  versions below 4.7.
- Raise an error if the Content-Type on response is not JSON.

0.2.4 (2016-08-17)
++++++++++++++++++

**Miscellaneous**

- Remove debug code

0.2.3 (2016-08-17)
++++++++++++++++++

**Bugfixes**

- Fix error handling

**Documentation**

- Update example usage with correct namespace for v2

0.2.2 (2016-07-22)
++++++++++++++++++

**Improvements**

- six and requests libraries not pinned to versions

0.2.1 (2016-07-20)
++++++++++++++++++

**Bugfixes**

- Fix syntax errors in README.rst
- Add missing dependency `six` to setup.py

**Miscellaneous**

- Update authors

0.2.0 (2016-07-20)
++++++++++++++++++

**Improvements**

- Update for v2 WP-API

0.1.5 (2015-07-16)
++++++++++++++++++

**Bugfixes**

- Include HISTORY.rst in setup.py

0.1.4 (2015-07-16)
++++++++++++++++++

**Documentation**

- Fix syntax errors in README.rst and HISTORY.rst

0.1.3 (2015-07-16)
++++++++++++++++++

**Improvements**

- Allow raw url parameters to be passed in and used for the API calls

0.1.2 (2015-02-03)
++++++++++++++++++

**Improvements**

- Allow headers to be passed in and used for the API calls

**Documentation**

- Add HISTORY.rst (this change log)


0.1.1 (2015-01-27)
++++++++++++++++++

**Bugfixes**

- Use json parameter instead of data parameter for requests


0.1.0 (2015-01-27)
++++++++++++++++++

- Birth!