Shownotes: Generate Custom Post Types for API

Here you find the Code for Copypasting to the Video created to show how the JCI-plugin can generate Custom Post Types out of JSON.

1. Link to JSON:

2. Plugin-Settings for Custom Post Tpyes:

3. Overview-Page: twig-cod

{% for m in _parent %}
{{(m.time/1000) | dateformat('%A %m/%d/%y %H:%M:%S ', 'Europe/Berlin', 'en_EN') }}<br>
{{m.venue.address_1}}, {{}}<br>
<a href="/meetup2/id{{}}/">more</a>
{% endfor %}

4. Custom Post Types: twig-code

<a href="{{}}+{{venue.lon}}" target="_blank">{{venue.address_1}}, {{}}</a>
Anmerkung: {{how_to_find_us}}
<a href="{{link}}" target="_blank">more on</a>
<a href="/list-of-meetups/">overview on current meetups</a>

5. Shortcode for generating page:

[jsoncontentimporterpro url= id=NUMBER_OF_TEMPLATE_POINT_3 DEAKdebugmode=10 mode=create createoptions='{"type":"meetup1", "loop":"", "title":"{{name}}", "slugname": "id{{id}}", "deleteold":"yes","customfields": #BRO# {"field1":"value1"}, {"field2{{id}}":"date{{#SQM#now#SQM#|date(#SQM#mdY#SQM#)}}"}#BRC#}']

6. Plugin Repository: Cron-Plugins


A Job for the PRO plugin is displaying and selecting data from the API.

Step 1 is creating a plugin-template with this twig-template (instead of concatenating the output you might push it directly)

{% set txt = "" %}
{% for m in model %}
{% set txt = txt ~ "<br>productId: " ~ m.productId%}
{% for r in m.rateScheduleList %}
{% set txt = txt ~ "<br>rateScheduleId: " ~ r.rateScheduleId%}
{% for rsl in r.rateSegmentList if  (rsl.rateSegmentTerm matches '/18 Months/i' ) %}
{% set txt = txt ~ "<br>rateSegmentId: " ~ rsl.rateSegmentId %}
{% for rsdl in rsl.rateSegmentDetailList%}
{% set txt = txt ~ "<br>segmentDetailId: " ~ rsdl.segmentDetailId ~ ", " ~ rsdl.chargeType %}
{% endfor %}
{% endfor %}
{% endfor %}
{% set txt = txt ~ "<hr>" %}
{% endfor %}


Save the plugin-template and remember the number of the template.
Add this shortcode to an page:

[jsoncontentimporterpro id=NUMBER_OF_TEMPLATE]

This should show you that:

productId: 74
rateScheduleId: 306
rateSegmentId: 306
segmentDetailId: 532, Electric Charges
segmentDetailId: 533, Service Account Charge

productId: 58
rateScheduleId: 164
rateScheduleId: 165
rateScheduleId: 166
rateScheduleId: 167
rateScheduleId: 168
rateScheduleId: 169
rateScheduleId: 170

Free Plugin with JSON-example

One user asked for hints on using a JSON like this. The solution is quite simple:

Install the free JSON Content Importer Plugin and use this Shortcode:

[jsoncontentimporter url= basenode=consumer_reviews_api]{subloop:params:-1}
params: {params.username}
trader: {trader.company_name}
review: {reviews.comments}<br>

See it in action:

params: AONE
trader: Gas Services
review: Installation of a new Worcester Bosch boiler via Worcester Bosh’s preferred installer. Joe was punctual, polite and was happy to talk through any questions I had. Work went well with no issues and the area was left very tidy afterwards. Highly recommended.
review: Service and repair job. Joe was professional, polite and completed the work in good time. The spares he carried on the van meant the broken valve could be replaced immediately, without need to order the part in or get the part. He even entertained my 4 year old who wanted to “help”
review: Good price, communication, high quality work, good advice.
review: New gas boiler fitted and gas safety check – done professionally with good quality finishing, all in a friendly and timely manner. Would recommend to a friend. 🙂
review: Joe was recommended by a friend, and is super professional and friendly. New combination boiler was installed efficiently with a fair quote.

The Block settings for that:

How to: urlparam4twig

You can define a urlparam4twig-list like “one#two” via the shortcode “urlparam4twig ” or (preferrably) the plugin-template.

This gives you the most flexible way to put a dynamic URL together for the API-call.

Create a template with this twig-code:

this is a template: <br>
time: {{ "now"|date("m.d.Y") }}<br>
urlparam "one": {{}}<br>
urlparam "two": {{urlparam.two}}

URL:{{ "now"|date("mdY") }}&a={{}}&b={{urlparam.two}}



Save this template and remember the no of the template, use this shortcode:

[jsoncontentimporterpro id=ID_OF_TEMPLATE]

Click here and see the change in the following paragraph. You might change the values for the parameters.
In the back the twig code in the URL is executed and the values for “one” and “two” are used.

this is a template:
time: 02.16.2019
urlparam "one":
urlparam "two":


Via the question came in on how to use… (see also here) with the free plugin.

Here we go:

[jsoncontentimporter url= numberofdisplayeditems=-1 basenode=tank]
fish: {subloop-array:fish:-1}quantity: {fish.quantity}<br>{/subloop-array:fish}
plants: {subloop-array:plants:-1}species: {plants.species}<br>{/subloop-array:plants}

If you use the pro plugin this is the twig-template for that:

Continue reading “API:”

API: – Sorting, Bearer

A request asked me, how to display data from the API sorted. One thing here is how to get access to the data. The other how to display that data.

Authentication at
What the API expects is described here. At the free plugin you can set the API_KEY at the plugin setup. The free plugin can’t sort the json-data, but together with the Plugin TableSorter a sortable Table is possible, see here.

Authorization: Bearer API_KEY

With the pro plugin it’s like this:
Create a new pro plugin template with the following settings.
The “curloptions” set the http-header. “sortbyjsonfield” sorts for the latitude-values. When saving the template you get a TEMPLATE_ID of this template:

{% for i in properties | sortbyjsonfield("latitude,desc,num") %}
latitude: {{i.latitude}}, postal_code: {{i.postal_code}}<br>
{% endfor %}




Use the new TEMPLATE_ID in the shortcode on a page or post:

[jsoncontentimporterpro  id=TEMPLATE_ID]


Request via “no feed coming through”

Question: “Can’t get raw data from this feed to show up at all. Not sure what I am missing:

I saved this JSON to to have this example independent from external sites.

Continue reading “API:”