A Laravel Package which makes use of WordPress to easily manage blog content, but also makes it possible to access all WordPress' posts, categories and tags through Eloquent Models.
- WP CLI globally installed
- A valid
APP_URL
in your.env
-file
Add the service provider in config/app.php
:
'providers' = [
...
meesoverdevest\wp_on_laravel\WPServiceProvider::class
];
Run the following from your project folder:
php artisan wol:install $password $email
Replace $password and $email with your wished credentials to use in WordPress.
gitignore public/blog if you don't want you content and uploads to be public.
Our package depends on Cartalyst Tags, which installs automatically as dependency. To be able to use Cartalyst Tags with WP_on_Laravel, you have to run their migrations as well. Doing so: $ php artisan vendor:publish --provider="Cartalyst\Tags\TagsServiceProvider" --tag="migrations"
or without publishing php artisan migrate --path=vendor/cartalyst/tags/resources/migrations
After running the installation command (php artisan wol:install $password $email
)
Run php artisan migrate
to migrate the new migrations
To enable outer access to the public WordPress installation you have to add the following to your website's nginx config:
server {
...
location = /blog {
return 301 /blog/wp-login.php;
}
location /blog/wp-json {
try_files $uri $uri/ /blog/index.php?$query_string;
}
location /blog/wp-admin {
try_files $uri $uri/ /blog/index.php?$query_string;
}
location / {
// standard settings
}
...
}
Don't forget to run (sudo) service nginx restart
use meesoverdevest\wp_on_laravel\helpers\WPAPI;
function syncWP(){
$WPAPI = new WPAPI();
$WPAPI->syncWP();
}
Use them freely inside your project. You can use the models like:
// WPPost
use meesoverdevest\wp_on_laravel\models\WPPost;
// WPCategory
use meesoverdevest\wp_on_laravel\models\WPCategory;
// Tag (managed by Cartalyst/Tags)
use meesoverdevest\wp_on_laravel\models\Tag;
// Show WPCategories for post
$posts = WPPost::where('parent', 0)->first()->categories();
// Show WPosts for tag
$tag = Tag::first()->posts();
// Show children WPCategories for parent WPCategory
$tag = WPCategory::first()->children();
====== TODO ======
- Add Delete Method and Webhooks to Package and functions.php in Wordpress installation
- Extend content retrieval methods
- Normalize the codebase