Je suis sur le point d'avoir à écrire un script pour prendre une nouvelle installation de WordPress 3.0.1 et ajouter toutes les fonctionnalités initiales d'un site Web . C'est pour une entreprise qui installe beaucoup de sites Web similaires et ils ont besoin d'un point de départ standard dans la configuration et les données.
- Je me demande si quelqu'un d'autre l'a déjà fait et si oui, s'il peut partager son code?
J'imagine que nous modifierons ce script chaque fois qu'ils créeront un nouveau site, donc le codage en dur est correct, bien que finalement (après suffisamment d'expérience) j'aimerais convertir en plugin.
Voici la liste de base des tâches dont je pense que nous aurons besoin (celles-ci supposent que j'ai commencé avec WordPress 3.0.1 déjà installé et mes plugins personnalisés et mon thème personnalisé copiés dans les répertoires appropriés) :
// Create users for the current site
// Delete Hello Dolly Plugin
// Download, Install and Activate repository plugins
// Activate Custom Plugins (assume the plugins are already there)
// Activate Custom Theme
// Delete Hello Post
// Delete Comment on Hello Post
// Create Pages with Starter Content
// Create Initial Custom Post Types with Starter Content
// Create Multiple Menus
// Create Menu Items for those Menus linking to Pages and wp-login.php
// Create Initial Taxonomy Terms
// Set Desired Permalinks Setting
// Set Static Front Page Setting
C'est à peu près tout (même si je peux en identifier davantage au fur et à mesure que j'y vais.)
Encore une fois, je cherche du code que je peux simplement copier et modifier pour ne pas avoir à comprendre tous ces détails moi-même (ce qui n'est pas difficile, juste fastidieux et prend du temps) .
Oh encore une chose, je dois commencer maintenant, donc le plus tôt sera le mieux! :-)
la source
Create Menus for Custom Pages
? Voulez-vous dire des zones de menu individuelles sur certaines pages ou quoi?Réponses:
Comme je l'ai mentionné, j'allais commencer à travailler sur ce besoin immédiatement alors je fais des progrès. Étant donné que je les supprime, je me suis dit qu'il valait mieux commencer à les publier. Pourtant, si quelqu'un d'autre peut / publiera (certaines) des parties que je n'ai pas faites, je serai heureux de vous laisser copier ce que je n'ai pas fait et de sélectionner votre réponse comme la meilleure réponse. D'ici là, je vais commencer à publier le code.
Première chose: inclure
wp-load.php
:Comme nous créons un fichier autonome à la racine du site Web pour exécuter l'initialisation qui ne sera utilisé que pour "bootstrap" un site (j'ai appelé le mien
/my-init.php
), nous commençons par inclure/wp-load.php
le chargement des fonctions de l'API WordPress:Création d'utilisateurs pour le site
Nous utiliserons la
wp_insert_user()
fonction située dans/wp-includes/registration.php
pour créer nos utilisateurs. Ce fichier n'est pas chargé par défaut, nous devrons donc le charger nous-mêmes avec un appel àrequire_once()
.Nous utiliserons également la
get_user_by()
fonction pour voir d'abord si l'utilisateur a déjà été créé; pas besoin d'exécuter le code deux fois si ce n'est pas le cas. REMARQUE: il s'agit d'un modèle qui suivra; Par exemple, notre script ne doit pas dupliquer ou remplacer quoi que ce soit s'il est appelé plusieurs fois, en particulier après que les utilisateurs ont ajouté ou modifié des données pour l'un des éléments que nous prévoyons d'initialiser.Suppression du plugin "Hello Dolly"
Pour supprimer le plugin "Hello Dolly" ( désolé Matt ), nous utiliserons la
delete_plugins()
fonction.delete_plugins()
attend un tableau de chemins de fichiers relatifs au/wp-content/includes/
répertoire. Pour le plugin Hello Dolly, le chemin du fichier est simplementhello.php
car le plugin Hello Dolly n'est pas stocké dans son propre répertoire, mais pour la plupart des plugins, il sera sous la forme de{$subdir}\{$filename}.php
; c'est-à-dire que le chemin du fichier pour Akismet estakismet/akismet.php
.Cependant,
delete_plugins()
n'est pas disponible jusqu'à ce que nous ayons inclus/wp-admin/includes/plugin.php
et il y a aussi une dépendance avecwp-admin/includes/file.php
nousrequire_once()
deux donc avant d'appelerdelete_plugins()
. Enfin, nous utilisons uneWP_PLUGIN_DIR
constante combinée avecfile_exists()
pour voir si le fichier du plugin principal existe avant d'essayer de le supprimer (ce n'est pas grave si nous essayions de supprimer un fichier manquant, mais il est plus élégant de vérifier d'abord et vous devrez peut-être savoir comment pour une autre raison) :Notez que parfois
delete_plugins()
échouera en raison des autorisations de fichier ou peut-être du fait qu'un plugin est actuellement activé ou d'une autre raison que vous devrez d'abord résoudre mais pour notre cas d'utilisation Hello Dolly s'en va sans combat.Téléchargement, installation et activation des plugins de référentiel
Je n'ai pas vraiment besoin de télécharger les plugins à partir du référentiel pour le moment (je pensais que ce serait bien d'avoir), nous allons laisser cette exigence glisser et la revisiter plus tard.
Activer vos plugins
La prochaine étape consiste à activer nos propres plugins personnalisés. Nous supposons que nous les avons déjà téléchargés dans le répertoire du plugin et tout ce dont nous avons besoin pour les activer pour WordPress. ( Remarque : Cette technique fonctionnera également pour l'activation des plugins de référentiel, elle ne sera tout simplement pas téléchargée et installée en premier.)
Nous utiliserons la
activate_plugin()
fonction qui, comme elle,delete_plugins()
doit/wp-admin/includes/plugin.php
être incluse mais n'est pas nécessaire/wp-admin/includes/file.php
au cas où vous auriez seulement besoin d'automatiser l'activation et non la suppression.Nous allons à nouveau tester l'existence (pas besoin d'activer s'il n'y en a pas, hein?) Et nous vérifierons également en utilisant la
is_plugin_active()
fonction que le plugin n'a pas déjà été activé. Notez que j'ai utilisé quelques variables cette fois ($plugin_filepath
et$plugin_dir
) pour éviter de dupliquer l'identifiant du plugin plusieurs fois.Notre exemple qui suit active le plugin
my-custom-plugin.php
qui se trouve dans lemy-custom-plugin
sous - répertoire:Activation de votre thème préféré
L'activation d'un thème est un peu plus facile que la suppression ou l'activation d'un plugin, relativement parlant; un appel de fonction est tout ce qui est nécessaire:
switch_theme()
. Laswitch_theme()
fonction accepte deux (2) paramètres: le modèle et la feuille de style . Eh bien, c'est du moins le nom des paramètres. Vous connaissez peut-être mieux les termes Thème parent et Thème enfant .En supposant que vous avez créé un thème enfant avec le thème TwentyTen par défaut fourni avec WordPress comme thème parent et que vous l'avez appelé "Mon thème personnalisé" et que
/wp-content/themes/my-custom-theme
vous l'avez placé dans le répertoire, vous activez votre thème à l'aide de cet appel:Mais que faire si ce n'est pas un thème enfant? C'est facile, il suffit de passer l' identifiant slug / theme du répertoire (c'est-à-dire le nom du sous-répertoire
/wp-content/themes
qui contient votre thème) comme deux paramètres. En supposant que vous souhaitiez activer le thème thématique d' Ian D Stewart, vous appelezswitch_theme()
ainsi:Personnellement, je pense que c'est un peu délirant d'avoir à garder une trace des deux détails ici, j'ai donc écrit une fonction appelée
activate_my_theme()
qui vérifie d'abord laget_current_theme()
fonction et sinon l'activer. Vous avez juste besoin de lui dire le thème enfant (alias la "feuille de style") et il comprend le thème parent pour vous (alias le "modèle") en saisissant les détails de laget_theme()
fonction.Un point clé à connaître ; la
get_theme()
fonction s'attend à recevoir le nom du thème enfant, PAS son identificateur de slug / theme de répertoire. (Le nom provient de la section "Nom du thème:" dans l'en-tête dustyle.css
fichier du thème . Heureusement, laget_current_theme()
fonction renvoie également le nom.)En inspectant l'en-tête dans le
style.css
fichier du thème par défaut WordPress Twenty Ten on voit que son nom est en fait'Twenty Ten'
:Suppression du message "Hello World"
Ensuite, nous voulons supprimer le message "Hello World" . Vous avez peut-être vu que @Rarst nous a montré comment utiliser la
wp_delete_post()
fonction qui est exactement ce dont nous avons besoin. Comme il l'a expliqué, le deuxième paramètre supprimera complètement le message au lieu de le déplacer dans la corbeille et le premier paramètre est le$post->ID
.Bien sûr, ce serait bien de pouvoir spécifier le slug au lieu du
$post->ID
et je décide donc de trouver un moyen de le faire. Après quelques spéléologies, j'ai trouvé que WordPress avait une fonction malheureusement nomméeget_page_by_path()
qui nous permet en fait de rechercher n'importe quel type de publication par son slug (elle est malheureusement nommée parce que vous pourriez l'ignorer lorsque vous essayez de trouver quelque chose qui fonctionne avec des types de publication autres que'page'
.)Puisque nous passons
get_page_by_path()
la constante définie par WordPress,OBJECT
elle nous renverra un message sous la forme d'un objet de publication. Pour le troisième paramètre que nous avons passé'post'
pour indiquer que nous voulions qu'il recherche les types de publication de'post'
. Puisqueget_page_by_path()
retournera l'objet post dont nous avons besoin ou retourneranull
si aucun post ne correspond au slug, nous pouvons vérifier son existence et faire une recherche en même temps:Remarque: Nous aurions pu exécuter du code pour supprimer tous les messages de la base de données, mais si nous l'avions, nous ne pourrions plus exécuter ce code une fois que nous aurions ajouté les messages que nous voulons conserver et c'était l'une de nos contraintes de conception.
Prochain...
Je continuerai d'ajouter à cela pendant que je le découvrirai jusqu'à ce que j'aie terminé ou jusqu'à ce que quelqu'un d'autre aide.
la source
Définir les liens permanents souhaités
Un nouveau projet de thème (génial) que j'ai rencontré cette semaine et qui est fortement axé sur la fonctionnalité HTML5 / CSS3 a son propre script de démarrage pour créer du contenu passe-partout, incorporer des paramètres de permalien, définir une racine relative pour l'installation du site, etc. les fonctionnalités sont appelées lors de l'activation du thème. Le projet s'appelle Roots et le code peut être téléchargé ici ; Je ne prends aucun crédit pour ce code. Cela dit, voici le code à définir automatiquement / année / nom de poste comme structure de permalien (et les crochets d'activation ci-dessous pour $ pagenow global sont expliqués ici: http://foolswisdom.com/wp-activate-theme-actio/ .) .
?>
la source
Supprimer Hello Post (avec commentaire)
wp_delete_post( 1, true );
Directement à partir de
wp_delete_post()
documents. Le deuxième paramètre le supprime complètement, au lieu de passer à la corbeille.Créer des menus
Cela crée un nouveau menu et y ajoute toutes les pages existantes en tant qu'éléments. Je ne suis pas sûr que ce soit tout à fait correct, je n'ai pas pu obtenir les éléments de menu pour afficher l'
Page
étiquette entre autres. De toute façon, mon cerveau fond, alors je fais une pause. Peut-être que quelqu'un pourra le mettre à niveau vers quelque chose de plus fiable.la source
Si je le comprends bien, vous le voulez pour une instalation initiale - alors j'ai peur que votre approche soit totalement fausse.
Beaucoup mieux, plus facilement et de manière standardisée consiste à créer install.php et à le placer dans le dossier wp-content - il est automatiquement chargé lors de l'installation.
Là, vous pouvez mettre votre propre fonction wp_install (comme la propre fonction wordpress utilise if (! Function_exist)) afin que vous puissiez facilement configurer vos options, activer les plugins, remplir les messages initiaux, les catégories, les tags, les utilisateurs ...
La deuxième option peut être pour la situation, où vous voulez effacer le wp déjà existant (par exemple pour la version de démonstration configurée toutes les 30 minutes par exemple en utilisant cron) - vous pouvez a) tronquer la base de données et utiliser la procédure ci-dessus, ou créer le plugin qui fait le même.
la source
install.php
, et deuxièmement, il existe d'autres cas d'utilisation quiinstall.php
ne s'appliquent pas. Oui,install.php
il a son utilité, mais il ne prend pas soin des détails ni de la panacée que vous impliquez.Jetez un œil à ce script d'installation. https://github.com/Pravdomil/WP-Quick-Install
Je prends vos idées et du code et je crée quelque chose que vous recherchez probablement.
Les fonctionnalités sont la base de données d'installation, différentes langues, créer des utilisateurs, définir les paramètres de base du site, supprimer les plugins et modèles par défaut, télécharger installer et activer les plugins et les thèmes, avatar par défaut, permaliens, première page statique.
N'hésitez pas à contribuer.
la source