lambry/apison

WordPress plugin to fetch, cache and access API data.

Installs: 8

Dependents: 0

Suggesters: 0

Security: 0

Stars: 2

Watchers: 1

Forks: 1

Open Issues: 0

Type:wordpress-plugin

v0.2.1 2019-09-14 05:11 UTC

This package is auto-updated.

Last update: 2025-06-29 01:51:59 UTC


README

Apison is little WordPress plugin to fetch, cache and access API data (JSON).

Simply add your api endpoints (with token if applicable) in the WordPress admin (under Settings->Apison), then you can access the cached API data via the helper class or rest endpoints.

Installing

Either run composer require lambry/apison or just download this repo and install it via the WordPress admin.

Admin interface

screenshot

Fetching cached API data via PHP

<?php
use Lambry\Apison\Frontend\Api;

// Get all jobs
Api::get('jobs')->all();

// Get full forcast with just humidity and temperature fields
Api::get('forcast')->with(['humidity', 'temperature'])->all();

// Get all contacts with a role of either sales or marketing
Api::get('contacts')->where('role', ['sales', 'marketing'])->all();

// Get the last 10 listings that have a price greater than 100
Api::get('listings')->where('price', 'gt', 100)->last(10);

// Get the first 20 events offset by 20 that are not in the sports category
Api::get('events')->where('category', 'not', 'sports')->first(20, 20);

// Get the title and price for all products that are currently on sale and are priced under 50
Api::get('products')->where('sale', true)->and('price', 'lt', 50)->with(['title', 'price'])->all();

Fetching cached API data via rest endpoints

<!-- Get all jobs -->
/wp-json/apison/jobs

<!-- Get full forcast with just humidity and temperature fields -->
/wp-json/apison/forcast?with=humidity,temperature

<!-- Get all contacts with a role of either sales or marketing -->
/wp-json/apison/contacts?role=sales,marketing

<!-- Get the last 10 listings that have a price greater than 100 -->
/wp-json/apison/listings?price.gt=100&last=10

<!-- Get the first 20 events offset by 20 that are not in the sports category -->
/wp-json/apison/events?category.not=sports&first=20,20

<!-- Get the title and price for all products that are currently on sale and are priced under 50 -->
/wp-json/apison/products?sale=true&price.lt=50&with=title,price

Filters

apison/key: allows you to supply an api key, just use _key_ as a placeholder when adding a new url.

apison/cache: filters the avaible options in the admin cache select box, i.e. 15mins, 1hr etc.

apison/permission: sets which permission to use when registering the admin menu.

<?php
// Setting api keys
add_filter('apison/key', function($slug) {
    switch ($slug) {
        case 'events':
            return env('EVENTS_API_KEY');
            break;
        case 'weather':
            return env('WEATHER_API_KEY');
            break;
    }
});

// Adding new cache durations
add_filter('apison/cache', function($options) {
    $options['10080'] = '1 week';

    return $options;
});

// Altering permissions to see the plugin admin
add_filter('apison/permission', function() {
    return 'manage_network';
});

Notes

The accepted where/and clause opterators are: is, not, gt (greater than), lt (less than), gte (greater than or equal to) and lte (less than or equal to).

Any cached anypoint can be forcibly refreshed by hitting refresh/endpoint i.e. /wp-json/apison/refresh/jobs or /wp-json/apison/refresh/forcast.

This plugin requires WordPress 4.8.0+ and PHP 7.1.0+.