Olympus Zeus Core is a framework which allows you to make all your WordPress plugins and themes developments easier and efficient.
composer require getolympus/olympus-zeus-core- Better and secure folder structure
- All Olympus fields integrated by default
- Olympus Hera Renderer and Hermes Translator
- Symfony HTTP Foundation and Class loader components
- Dependency management with Composer
- And more...
To initialize Zeus Core from your functions.php WordPress theme file or main plugin php file:
// file: functions.php namespace MyThemeName; /** * Everything starts here. * * @package MyThemeName * @author Your Name <yourmail@domain-name.ext> * @since x.y.z * */ // Directory separator and Vendor path. defined('S') or define('S', DIRECTORY_SEPARATOR); // Provided by Olympus container defined('VENDORPATH') or define('VENDORPATH', realpath(dirname(__DIR__)).S.'vendor'.S); // Provided by Olympus container /** * MyThemeName class definition */ if (!class_exists('MyThemeName')) { /** * Use of Zeus abstract PHP class to initialize everything. */ class MyThemeName extends \GetOlympus\Zeus\Zeus { /** * Define all useful folders */ // Load option admin pages protected $adminpages = __DIR__.S.'controllers'.S.'adminpages'; // Load scheduled actions protected $crons = __DIR__.S.'controllers'.S.'crons'; // Load custom post types protected $posttypes = __DIR__.S.'controllers'.S.'posttypes'; // Load custom terms protected $terms = __DIR__.S.'controllers'.S.'terms'; // Load options for users protected $users = __DIR__.S.'controllers'.S.'users'; // Load custom widgets protected $widgets = __DIR__.S.'controllers'.S.'widgets'; /** * Define WordPress optimizations and configurations in a single var. */ protected $configurations = [ 'AccessManagement' => [/*...*/], 'Assets' => [/*...*/], 'Clean' => [/*...*/], 'Menus' => [/*...*/], 'Settings' => [/*...*/], 'Shortcodes' => [/*...*/], 'Sidebars' => [/*...*/], 'Sizes' => [/*...*/], 'Supports' => [/*...*/], ]; /** * Main function which defines vendors path * and some useful actions needed by your application */ protected function setVars() { // Load Zeus framework vendors. if (file_exists($autoload = VENDORPATH.'autoload.php')) { include $autoload; } // Add custom actions. } } } // Instanciate MyThemeName return new MyThemeName();Assuming you need a new Movie custom post type, here is the controllers/posttypes/MoviePosttype.php content file:
// file: controllers/posttypes/MoviePosttype.php namespace MyThemeName\Controllers\Posttypes; /** * Extends main \GetOlympus\Zeus\Posttype\Posttype class to use all functionalities */ class MoviePosttype extends \GetOlympus\Zeus\Posttype\Posttype { /** * @var array */ protected $args = [ 'menu_icon' => 'dashicons-video-alt3', 'supports' => ['title', 'excerpt', 'thumbnail'], 'taxonomies' => ['post_tag'], 'rewrite' => [ 'slug' => 'movie', 'with_front' => true, ], ]; /** * @var string */ protected $slug = 'movie'; /** * Prepare variables. */ public function setVars() { // Update labels $this->setLabels([ 'name' => __('Movies', 'mythemename'), 'singular_name' => __('Movie', 'mythemename'), ]); // Add metabox $this->addMetabox(__('Details', 'mythemename'), [ \GetOlympus\Dionysos\Field\Text::build('link', [ 'title' => __('Movie source URL', 'mythemename'), ]), \GetOlympus\Dionysos\Field\Text::build('length', [ 'title' => __('Length in seconds', 'mythemename'), ]), \GetOlympus\Dionysos\Field\Text::build('author', [ 'title' => __('Author name', 'mythemename'), ]), // (...) ]); } }See CHANGELOG.md for all details.
- Fork it (https://github.com/GetOlympus/Zeus-Core/fork)
- Create your feature branch (
git checkout -b feature/fooBar) - Commit your changes (
git commit -am 'Add some fooBar') - Push to the branch (
git push origin feature/fooBar) - Create a new Pull Request
Built with ♥ by Achraf Chouk ~ (c) since a long time.