#!/usr/bin/env bash # ============================================================================= # So Piping : installation initiale du site (WP-CLI) # # Usage : bash setup.sh /chemin/vers/wordpress # En root : WP_FLAGS=--allow-root bash setup.sh /chemin/vers/wordpress # # Le script est relançable : ce qui existe déjà n'est pas recréé. # Il peut être supprimé une fois le site en place. # ============================================================================= set -euo pipefail WP_PATH="${1:-.}" WP_FLAGS="${WP_FLAGS:-}" wp_() { wp --path="$WP_PATH" $WP_FLAGS "$@"; } say() { printf '\n==> %s\n' "$*"; } command -v wp >/dev/null || { echo "WP-CLI (commande « wp ») est introuvable."; exit 1; } wp_ core is-installed || { echo "Aucun WordPress trouvé dans : $WP_PATH"; exit 1; } # ---------------------------------------------------------------- Thème say "Activation du thème" wp_ theme activate sopiping # ---------------------------------------------------------------- Réglages say "Réglages généraux" wp_ option update blogname "So Piping" >/dev/null wp_ option update blogdescription "Cornemuses écossaises" >/dev/null wp_ option update timezone_string "Europe/Paris" >/dev/null # Site non indexé pendant la construction. Au lancement : # wp option update blog_public 1 wp_ option update blog_public 0 >/dev/null wp_ rewrite structure "/%postname%/" >/dev/null wp_ rewrite flush >/dev/null echo " ok (indexation par les moteurs de recherche désactivée)" # ---------------------------------------------------------------- Pages say "Pages" page() { # titre slug contenu local title="$1" slug="$2" content="$3" id id=$(wp_ post list --post_type=page --name="$slug" --post_status=any --field=ID | head -n1 || true) if [ -z "$id" ]; then wp_ post create --post_type=page --post_status=publish \ --post_title="$title" --post_name="$slug" --post_content="$content" --porcelain >/dev/null echo " créée : $title" else echo " existe déjà : $title" fi } page "Catalogue Dunbar" "catalogue-dunbar" \ "

Présentation des cornemuses et des finitions Dunbar : à compléter.

" page "Catalogue Gibson" "catalogue-gibson" \ "

Présentation des cornemuses et des finitions Gibson : à compléter.

" page "Services & Prestations" "services-prestations" \ "

Services

Maintenance, réglages, SAV, cours : à compléter.

Prestations

Mariages et événements : à compléter.

" page "Contact" "contact" \ "

So Piping
9 Rue Auguste Renoir
89240 Villefargeau

Téléphone : 06 52 12 87 76

" page "Conditions générales" "conditions-generales" "

À compléter.

" page "Politique de confidentialité" "politique-de-confidentialite" "

À compléter.

" page "Politique de cookies" "politique-de-cookies" "

À compléter.

" page_id() { wp_ post list --post_type=page --name="$1" --post_status=any --field=ID | head -n1; } # ---------------------------------------------------------------- Catégories say "Catégories de la boutique" if ! wp_ plugin is-active woocommerce; then echo " WooCommerce n'est pas actif : catégories ignorées." else cat_id() { wp_ term get product_cat "$1" --by=slug --field=term_id 2>/dev/null || true; } category() { # nom slug slug-du-parent ordre local name="$1" slug="$2" parent_slug="$3" order="$4" id parent=0 if [ -n "$parent_slug" ]; then parent=$(cat_id "$parent_slug"); fi id=$(cat_id "$slug") if [ -z "$id" ]; then id=$(wp_ term create product_cat "$name" --slug="$slug" --parent="$parent" --porcelain) echo " créée : $name" else echo " existe déjà : $name" fi wp_ term meta update "$id" order "$order" >/dev/null } category "Anches" anches "" 1 category "Anches de bourdon" anches-bourdons anches 1 category "Anches de chanter" anches-chanters anches 2 category "Anches de practice" anches-practices anches 3 category "Poches" poches "" 2 category "Poches en cuir" poches-cuir poches 1 category "Poches hybrides" poches-hybrides poches 2 category "Poches synthétiques" poches-synthetiques poches 3 category "Caisses & Valises" caisses-valises "" 3 category "Sutell & Embouts" sutell-embouts "" 4 category "Chanters" chanters "" 5 category "Practices" practices "" 6 category "Cornemuses électroniques" cornemuses-electroniques "" 7 category "Accessoires & Maintenance" accessoires-maintenance "" 8 category "Humidité" humidite "" 9 category "Hygrométrie" hygrometrie "" 10 fi # ---------------------------------------------------------------- Menus say "Menus" menu_exists() { wp_ menu list --fields=name --format=csv | tail -n +2 | grep -Fxq "$1"; } if menu_exists "Menu principal"; then echo " existe déjà : Menu principal" else wp_ menu create "Menu principal" >/dev/null wp_ menu item add-custom "Menu principal" "Accueil" "$(wp_ option get home)" >/dev/null wp_ menu item add-post "Menu principal" "$(page_id catalogue-dunbar)" --title="Catalogue Dunbar" >/dev/null wp_ menu item add-post "Menu principal" "$(page_id catalogue-gibson)" --title="Catalogue Gibson" >/dev/null shop_id=$(wp_ option get woocommerce_shop_page_id 2>/dev/null || true) if [ -n "$shop_id" ] && [ "$shop_id" != "0" ]; then wp_ menu item add-post "Menu principal" "$shop_id" --title="Boutique" >/dev/null fi wp_ menu item add-post "Menu principal" "$(page_id services-prestations)" --title="Services & Prestations" >/dev/null wp_ menu item add-post "Menu principal" "$(page_id contact)" --title="Contact" >/dev/null wp_ menu location assign "Menu principal" primary >/dev/null echo " créé : Menu principal" fi if menu_exists "Menu pied de page"; then echo " existe déjà : Menu pied de page" else wp_ menu create "Menu pied de page" >/dev/null for slug in contact conditions-generales politique-de-confidentialite politique-de-cookies; do wp_ menu item add-post "Menu pied de page" "$(page_id "$slug")" >/dev/null done wp_ menu location assign "Menu pied de page" footer >/dev/null echo " créé : Menu pied de page" fi say "Terminé." echo "Il reste à faire depuis l'admin WordPress :" echo " - ajouter le logo (Apparence > Personnaliser > Identité du site)" echo " - compléter les pages et déposer les images dans assets/img/" echo " - au lancement : wp option update blog_public 1"