Bedrock

Instalar Bedrock con Ddev

ddev config --project-type=wordpress --docroot=web --create-docroot 
 
ddev composer create roots/bedrock

Añadir variables a .env

DB_NAME='db'
DB_USER='db'
DB_PASSWORD='db'
DB_HOST='db'

WP_HOME="${DDEV_PRIMARY_URL}"

Después se inicia con ddev start y la web queda disponible en dominio.ddev.site

Plugins imprescindibles

"wpengine/advanced-custom-fields-pro": "*",
"wpackagist-plugin/fluentform": "*",
"wpackagist-plugin/simple-smtp": "*",
"wpackagist-plugin/woocommerce": "*",
"wpackagist-plugin/admin-site-enhancements": "*",
"wpackagist-plugin/wordpress-seo": "*",
"wpackagist-plugin/wordfence": "*",
"wpackagist-plugin/cookie-law-info": "*"

Si usamos Sage/Radicle añadir también:
Navi
Acf-composer
Sage-directives

"log1x/acf-composer": "*",
"log1x/navi": "*",
"log1x/sage-directives": "*",

Necesario añadir el siguiente repositorio para ACF

{
	"type": "composer",
	"url": "https://connect.advancedcustomfields.com"
}

Y añadir credenciales dentro de auth.json

{
   "http-basic": {
      "connect.advancedcustomfields.com": {
         "username": "b3JkZXJfaWQ9MzI1Mjd8dHlwZT1kZXZlbG9wZXJ8ZGF0ZT0yMDE0LTA3LTA3IDEzOjMxOjU1",
         "password": "https://mysite.com"
      },
      "composer.freemius.com": {
         "username": "[email protected]",
         "password": "GJthtmaHVJO9qMYSMpytgxCryK_SB6q2gT3Rz-clJCw"
      }
   }
}
 

Bug

Actualmente hay un bug con Radicle y es necesario añadir la siguiente modificación al archivo /public/content/mu-plugins/00-acorn-boot.php para evitar problemas con los paquetes log1x.

// https://github.com/roots/radicle/issues/14

// \Roots\bootloader()->boot();
add_action(‘after_setup_theme’, fn () => \Roots\bootloader()->boot());

Transformar Bedrock a Vanilla Wordpress

Script automatizado pero el siguiente paso a paso también es útil

Crear una carpeta e instalar ahí Vanilla Wordpress

mkdir vanillawp
cd vanillawp
wp core download
wp config create --dbname={vanilladb} --dbuser={vanilladbuser} --dbpass={vanilladbpass}

Copiar app a wp-content

rsync -vrz {bedrock/web/app/} {vanillawp/wp-content}

Quitar mu-plugins en desuso

  • register-theme-directory.php
  • bedrock-autoloader.php
  • disallow-indexing.php

Exportar base de datos

wp db export //WP-CLI
 
ddev export-db -f dump.sql.gz //DDEV

Importar base de datos vía wp-cli

wp db import

Reemplazar dominios y rutas en db

wp search-replace "url vieja" "url nueva"
 
wp search-replace "/app/" "/wp-content/"
 
wp option update home "https://urlnueva"
 
wp option update siteurl "https://urlnueva"

Htaccess y document root

Cuando el hosting no permita cambiar el document root a /web podemos usar el siguiente .htaccess aunque no es lo más recomendable

RewriteEngine on

RewriteCond %{REQUEST_URI} !web/
RewriteRule ^(.*)$ /web/$1 [L]

Multisite

https://mikegarlick.dev/blog/bedrock-multisite-subfolder-subdomain/