For testing, you should install the wp-cli
, which allows us to have
a development version of a wordpress server running.
You need to have php installed to do this.
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
Move it to somewhere in your PATH and make it executable.
Next, create a database and user with access to it. The names should
be the following, or else you'll have to change the config file within
the wp
directory.
$ mysql -u root -p
[enter password]
mysql> CREATE DATABASE offset_test;
mysql> CREATE USER 'offset'@'localhost' IDENTIFIED by '111';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'offset'@'localhost' WITH GRANT OPTION;
Now change into the wp
directory and finish the install and start the server with:
$ wp core config --dbname=offset_test --dbuser=offset --dbpass=111
$ wp core install --admin_user=offset --admin_password=111 --url=localhost --title="Offset Test" --admin_email="[email protected]"
$ wp server --port=5555
Set the permalink structure, activate the plugins, set the name of the admin, and set the application password:
wp option update permalink_structure '/%year%/%monthnum%/%postname%/'
wp plugin activate --all
wp user update 1 --display_name="Ira Rubel" --first_name="Ira" --last_name="Rubel"
wp eval-file create_password.php
To test that it is working,
run the following command (requires the jq
utility, which you can
install on macs with brew install jq
):
curl http://localhost:5555/wp-json/ | jq
Which should print out a bunch of json.
Now clear the default and insert the needed test posts, as well as adding tags:
python setup_posts.py
(TODO: Explain the WordPress plugins that are needed to make this work)
<wpPosts>
- This tag accepts the following attributes:
num
- should be an integer. the number of posts per page. Defaults to 20.
page
- should be an integer. This is the current page (1
is the first one) worth of posts.
limit
- should be an integer, and this restricts the number of posts
that come back in the current page. Note that if you haven't set
page
, changing this is equivalent to changing num
. If you have set
page
, then the first page
full pages (each of size num
) are
skipped, and then the first limit
posts are returned. Defaults to
20.
offset
- should be an integer, and this affects how many posts are
skipped in the current page. If you don't set the page
, then this is
just the number of posts that are skipped before the first limit
posts are returned, but if you have set page
, the first page
full
pages of posts (each of size num
) will be skipped, then an
additional offset
posts will be skipped, and finally, limit
posts
will be returned.
<wpPostByPermalink>
- This tag expects to have the url be /YYYY/MM/SLUG
, and finds
the post accordingly.
<wpNoPostDuplicates/>
- This is a side-effect only tag, that causes, from this point
in the page forward, no duplicate posts to be returned from <wpPosts/>
. This can make
certain layouts easier to express, rather than figuring out exactly how to combine the
various numeric arguments to avoid duplication.