Skip to content

Awesome WordPress starter theme for developers based on modern web technologies.

License

Notifications You must be signed in to change notification settings

suomato/base-camp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dependency Status Dependency Status License

About Base Camp

Awesome WordPress starter theme with own CLI for developers based on modern web technologies.

Features

  • Bulma (Responsive CSS framework based on Flexbox)
  • Timber
    • Twig Template Engine
    • Cleaner and better code
    • Separates the logic from presentation
  • Webpack
    • Sass / Scss for stylesheets (Minimize in production)
    • ES6 for Javascript (Minimize in production)
    • Automatic Cache Busting
    • Split javascript code to two chunks, app.js and vendor.js
    • Vuejs for boosting frontend development
    • BrowserSync for synchronised browser testing
  • Luna (Command-line interface included with Base Camp)
  • WooCommerce support with basic boilerplate.

Requirements

Installation

  • Go your themes folder and runcomposer create-project suomato/base-camp
  • cd base-camp
  • yarn or npm install
  • define your custom webpack config to build/config.js file
  • yarn watch or npm run watch
  • Happy developing :)

Structure

base-camp/                                          # Theme root
├── app/                                            # Theme logic
│   ├── config/                                     # Theme config
│   │   ├── wp/                                     # WordPress specific config
│   │   │   ├── admin-page.php                      # Register here WordPress Admin Page config
│   │   │   ├── image-sizes.php                     # Register here WordPress Custom image sizes
│   │   │   ├── login-page.php                      # Register here WordPress Login Page config
│   │   │   ├── maintenance.php                     # Maintenance mode config
│   │   │   ├── menus.php                           # Register here WordPress navigation menus
│   │   │   ├── scripts-and-styles.php              # Register here WordPress scripts and styles
│   │   │   ├── security.php                        # Things that increase the site security
│   │   │   ├── sidebars.php                        # Register here WordPress sidebars
│   │   │   └── theme-supports.php                  # Register here WordPress theme features
│   │   ├── autoload.php                            # Includes all config files (DON'T REMOVE THIS)
│   │   ├── timber.php                              # Timber specific config
│   │   └── woocommerce.php                         # Init woocommerce support
│   ├── models/                                     # Wrappers for Timber Classes
│   ├── timber-extends/                             # Extended Timber Classes
│   │   └── BaseCampSite.php                        # Extended TimberSite Class
│   ├── bootstrap.php                               # Bootstrap theme
│   ├── helpers.php                                 # Common helper functions
├── build/                                          # Theme assets and views
│   ├── config.js                                   # Custom webpack config
│   ├── webpack.config.js                           # Webpack config
├── resources/                                      # Theme assets and views
│   ├── assets/                                     # Front-end assets
│   │   ├── js/                                     # Javascripts
│   │   │   └── components/                         # Vue Components
│   │   ├── sass/                                   # Styles
│   │   │   └── components/                         # Partials
│   ├── languages/                                  # Language features
│   │   ├── base-camp.pot                           # Template for translation
│   │   └── messages.php                            # Language strings
│   ├── views/                                      # Theme Twig files
│   │   ├── components/                             # Partials
│   │   ├── footer/                                 # Theme footer templates
│   │   └── header/                                 # Theme header templates

Models

Models are wrapper classes for Wordpress Post Types and Taxonomies. They provide very simple interface to interact with the database.

How to use

// index.php

<?php

use Basecamp\Models\Post;

// returns an array of TimberPost objects
Post::all();

// returns TimberPost object with the ID 1 (if it exists)
Post::find(1);

// returns first two posts;
Post::take(2)->get();

// skips first two posts;
Post::skip(2)->get();

// returns published posts;
// Supported values: https://codex.wordpress.org/Post_Status#Default_Statuses
Post::status('publish')->get();

// returns all posts except post with ID 1;
Post::exclude([1])->get();

// returns only posts with ID 1;
Post::include([1])->get();

// returns an array of posts descending order by author;
// Supported Values: https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters
Post::orderby('author', 'desc')->get();

// returns an array of posts authored by admin;
Post::author('admin')->get();

// returns an array of posts which are in category 'cars' or 'vehicles';
Post::inCategory(['cars', 'vehicles'])->get();

All queries are chainable. For example you can get three first incomplete posts authored by admin:

Post::status('draft')->author('admin')->take(3)->get();

All models are able to use almost every methods. However there are some exceptions:

  • Only Post model has inCategory() method
  • Taxonomies (Category, Tag) have hideEmpty() method

Luna (Command-line interface)

Docs