tamagokun / pomander-wordpress

Wordpress tasks for use with Pomander
http://ripeworks.com/pomander/wordpress.html
MIT License
36 stars 5 forks source link

pomander-wordpress - Wordpress tasks for Pomander

This is a plugin to help fully manage your Wordpress projects with the help of Pomander.

Install

$ composer require pomander/wordpress:@stable

Requirements:

Getting Started

Installation

Load the plugin in your environment configuration:

<?php

$env->load("Wordpress");

That's it! Use pom -T to see the new tasks that you have.

Local Development

Pomander-wordpress provides a simple task for pulling down and setting up Wordpress locally so that you don't need to manage any of that when you are developing Wordpress sites on your local machine:

$ pom setup

Added Tasks

deploy:plugins      Deploy plugins in environment.
deploy:wordpress    Deploy Wordpress in environment.
htaccess            Create and deploy .htaccess for environments
setup               Alias of wpify
uploads:pull        Download uploads from environment
uploads:push        Place all local uploads into environment
wp_config           Create and deploy wp-config.php for environment
wpify               Wordpress task stack for local machine (1 and done)

Configuration

This plugin introduces a wordpress option, and a plugins option. These are both array structures that you can configure either in a PHP based config, or a YAML based config.

An example of what a .php config for a Wordpress might look like:

$env->database(array(
    'name' => 'my_wordpress',
    'user' => 'root',
    'password' => '',
    'host' => '127.0.0.1',
    'charset' => 'utf8'
));

$env->wordpress(array(
    'version' => '3.5.2',
    'db_prefix' => 'wp_',
    'base_uri' => ''
));

$env->plugins(array(
    'advanced-custom-fields' => array('version' => 'latest'),
    'gravityforms' => array('dir' => 'lib/gravityforms')
));

And an example of a YAML based config:

database:
    name: my_wordpress
    user: root
    password:
    host: 127.0.0.1
    charset: utf8

wordpress:
    version: 3.5.2
    db_prefix: wp_
    base_uri: /wordpress # Base uri for Wordpress installation (example: dev.local/wordpress)

plugins:
    more-types: {version: latest}
    more-fields: {version: 2.1, svn: http://plugins.svn.wordpress.org/more-fields}
    gravityforms: {dir: some_other_dir/gravityforms}
    my-plugin: {branch: origin/master, git: https://github.com/dude/my-plugin.git}

Plugins can be provided with:

Structure

You can certainly use this plugin however you please, but some tasks are expecting a certain Wordpress structure that I feel is much better than the typical Wordpress folder structure. Here we go:

deploy/             This is where your Pomander configs go (nothing weird about that)
public/             Welcome to your new wp-content folder.
--- themes/
--- uploads/
vendor/             Plugins go in here.
--- plugins/
wordpress/          Your Wordpress installation goes here. You should never really have to go into this folder
wp-config.php       See that? We keep wp-config outside of your wordpress installation for added security

Examples

Moving Uploads

Grab uploads from production to ease development:

$ pom production uploads:pull

You can chain commands to move uploads between environments:

$ pom production uploads:pull staging uploads:push