BBC's guide to development
  • General

    • About
    • Tools
    • Git(hub)
    • Showpad
    • Hosting
    • Maintenance
    • Security
    • Go live checklist
  • Front-end development

    • Bundlers
    • CSS/SCSS
    • Javascript
    • Vue
    • PHP
    • Mails
    • Dev Faq
  • Functions
  • Mixins
  • General

    • OOP Structure
  • Component Classes

    • Accordion
    • App
    • Component
    • HighwayApp
    • Popup
    • PNG Sequencer
    • Tab
  • Manager Classes

    • BountListenerMgr
    • Cache
    • Configuration
    • InViewStateMgr
    • Instance Manager
    • Event dispatcher
  • Factories

    • SwiperFactory
  • PDF

    • AssetLoader
    • BasePdfDoc
    • TemplatePdfDoc
    • CustomPdfDoc
  • Utility functions

    • canvas
    • Connection Status
    • css
    • dev
    • placeholder
    • dom
    • fetch
    • json
    • object
    • scroll
    • scrollbar
    • spreadsheets
    • string
    • url
  • General

    • ComponentMgr
    • ThreeJsViewer
  • Components

    • ComponentMgr
    • GltfModel
    • Snappable
    • Socket
    • ThreeJsViewer
    • ThreeJsViewerCamera
  • Loaders

    • ConfigurationSerializer
    • GltfBlockParser
  • Utils

    • CanvasInputAdapter
    • CollisionManager
    • SocketGridExpander
    • blender
    • headless
  • General

    • Troubleshooting
    • Legacy
  • Components

    • AssetBar
    • ConfigGenerator
    • ShowpadApp
  • Managers

    • Assets
    • AppsDb
    • Config
  • Utils

    • Connection Status
    • general
    • showpad-interactive
    • showpad-upload
  • Components

    • Accordion
    • BackButton
    • Breadcrumb
    • ByltButton
    • Hamburger
    • Icon
    • Logo
    • Loader
    • Modal
    • Popup
    • Prompt
    • ProgressBar
    • TextLoader
  • Composables

    • useDebugMode
    • useConnectionStatus
  • Utils

    • dom
    • props
  • General

    • General
    • Tracking
  • Components

    • Accordion
    • ActionButton
    • AssetItem
    • AssetList
    • BackButton
    • ConfigGenButton
    • Logo
    • Media
    • Modal
    • Popup
    • Prompt
    • SPButton
    • SPRouterView
    • SPTrackedRouterLink
    • TextLoader
    • View
  • Composables

    • useConnectionStatus
  • Stores

    • useAppsDbStore
    • useBreadcrumbStore
    • useShowpadAPIStore
    • useShowpadSDKStore
    • useSpConfigStore
    • useSpStore
    • useSpTrackingStore
  • The New Kit

    • General
    • Installation & Usage
    • ACF Blocks
    • PHPCS
    • Functions
    • Vite
    • WP Config
    • Staging Deployment
  • Best Practices

    • Page Structure
    • Fonts/Typography
  • Todo
GitHub
  • General

    • About
    • Tools
    • Git(hub)
    • Showpad
    • Hosting
    • Maintenance
    • Security
    • Go live checklist
  • Front-end development

    • Bundlers
    • CSS/SCSS
    • Javascript
    • Vue
    • PHP
    • Mails
    • Dev Faq
  • Functions
  • Mixins
  • General

    • OOP Structure
  • Component Classes

    • Accordion
    • App
    • Component
    • HighwayApp
    • Popup
    • PNG Sequencer
    • Tab
  • Manager Classes

    • BountListenerMgr
    • Cache
    • Configuration
    • InViewStateMgr
    • Instance Manager
    • Event dispatcher
  • Factories

    • SwiperFactory
  • PDF

    • AssetLoader
    • BasePdfDoc
    • TemplatePdfDoc
    • CustomPdfDoc
  • Utility functions

    • canvas
    • Connection Status
    • css
    • dev
    • placeholder
    • dom
    • fetch
    • json
    • object
    • scroll
    • scrollbar
    • spreadsheets
    • string
    • url
  • General

    • ComponentMgr
    • ThreeJsViewer
  • Components

    • ComponentMgr
    • GltfModel
    • Snappable
    • Socket
    • ThreeJsViewer
    • ThreeJsViewerCamera
  • Loaders

    • ConfigurationSerializer
    • GltfBlockParser
  • Utils

    • CanvasInputAdapter
    • CollisionManager
    • SocketGridExpander
    • blender
    • headless
  • General

    • Troubleshooting
    • Legacy
  • Components

    • AssetBar
    • ConfigGenerator
    • ShowpadApp
  • Managers

    • Assets
    • AppsDb
    • Config
  • Utils

    • Connection Status
    • general
    • showpad-interactive
    • showpad-upload
  • Components

    • Accordion
    • BackButton
    • Breadcrumb
    • ByltButton
    • Hamburger
    • Icon
    • Logo
    • Loader
    • Modal
    • Popup
    • Prompt
    • ProgressBar
    • TextLoader
  • Composables

    • useDebugMode
    • useConnectionStatus
  • Utils

    • dom
    • props
  • General

    • General
    • Tracking
  • Components

    • Accordion
    • ActionButton
    • AssetItem
    • AssetList
    • BackButton
    • ConfigGenButton
    • Logo
    • Media
    • Modal
    • Popup
    • Prompt
    • SPButton
    • SPRouterView
    • SPTrackedRouterLink
    • TextLoader
    • View
  • Composables

    • useConnectionStatus
  • Stores

    • useAppsDbStore
    • useBreadcrumbStore
    • useShowpadAPIStore
    • useShowpadSDKStore
    • useSpConfigStore
    • useSpStore
    • useSpTrackingStore
  • The New Kit

    • General
    • Installation & Usage
    • ACF Blocks
    • PHPCS
    • Functions
    • Vite
    • WP Config
    • Staging Deployment
  • Best Practices

    • Page Structure
    • Fonts/Typography
  • Todo
GitHub
  • Installation & Usage

Installation & Usage

Our new WordPress starterkit combines the latest modern WordPress best-practices with an amazing Developer Experience.

Pre-requisites

  • Make sure you have git, wp-cli and composer installed and accessible in PATH (global install)
  • For pushing to staging you will need to add an ssh key to your keychain and brew install rsync, more info @Going Staging

Installation

Create the repository

To start a new WordPress project, create a new Github repository and pick bbcdev.wordpress-starter-kit as a template.

Packages

First of all install the project:

# Set the correct Node.js version
# (run "nvm install" if you don't have the necessary version)
nvm use

# Install project dependencies
npm i

MAMP

Then we need to set up MAMP:

  • Create empty host with name equal to local url: loc.sitename.be
  • Choose the /www/ folder as document root
  • Create and link a new database: loc_db_sitename

Run the script

Now we are ready for the startup script: In the project root, run npm run setup:full

The script will prompt you to select a starter kit. For all new projects, you must choose one option:

  • - This is the one you want to use. No bloat. No unnecessary php/javascript. Fresh and clean.

  • - You may see other options in the list. These are deprecated or unfinished kits that should not be used.

Choosing plugins

When WordPress is installed you will need to select which plugins you want pre-installed:

PluginCategoryMinimalStandardFull
ACF Options for PolylangMulti-language❌✅✅
Advanced Custom Fields ProContent Management✅✅✅
Disable Gutenberg BlocksEditor Enhancement❌❌✅
Duplicate PostUtilities❌✅✅
PolylangMulti-language❌✅✅
Search Filter ProSearch & Filter❌❌✅
Sucuri ScannerSecurity❌❌✅
Yoast SEOSEO & Marketing✅✅✅
WP 2FASecurity❌❌✅
WP All Import ProImport & Export❌❌✅
WP All Import ACF Add-OnImport & Export❌❌✅

✅ = Included in preset
❌ = Not included in preset

If you want you can select your plugins manually. This list works using the plugins.json in the root folder and the plugins folder inside /dev-tools/plugins/. Feel free to add/edit this list.

Site data

Now you will have to enter some essential data about the project, here is an example:

  • Website name: Site Name
  • Theme name: sitename25
  • Local URL: loc.sitename.be (same as in MAMP)
  • Theme description: A custom theme for sitename by BBC
  • Theme author: DJ
  • Database prefix: wp_
  • Database name: loc_db_test (same as in MAMP)

Setting up WordPress

The script will install wordpress, set up the database and when it's done it will open a wp-admin tab. Here you can login using:

Username: dev@bbc.be

Password: admin

Once you're logged in, do these things:

  • Change your password immediately and put it in Keeper shared with the Digital Team
  • Activate and update your plugins, add license keys (especially ACF PRO)
  • Go to the permalinks page to make sure Wordpress has generated a .htaccess

Now you can finally start developing!

Edit this page
Last Updated: 4/27/26, 12:56 PM
Contributors: Nicolas Jaenen