Estoy a punto de tener que escribir un script para realizar una nueva instalación de WordPress 3.0.1 y agregar todas las características iniciales de un sitio web . Esto es para una empresa que instala muchos sitios web similares y necesitan un punto de partida estándar en configuración y datos.
- Me pregunto si alguien más ya ha hecho esto y, de ser así, si pueden compartir su código.
Imagino que modificaremos este script cada vez que creen un nuevo sitio, por lo que la codificación está bien, aunque eventualmente (después de suficiente experiencia) me gustaría convertirlo en un complemento.
Aquí está la lista básica de tareas que creo que necesitaremos (suponen que he comenzado con WordPress 3.0.1 ya instalado y mis complementos personalizados y tema personalizado copiados en los directorios apropiados) :
// 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
Eso es todo (aunque puedo identificar más a medida que me meto).
Nuevamente, estoy buscando un código que pueda copiar y modificar para no tener que resolver todos estos detalles yo mismo (lo cual no es difícil, solo es tedioso y requiere mucho tiempo) .
¡Oh, una cosa más, tengo que comenzar con esto ahora, así que cuanto antes mejor! :-)
fuente
Create Menus for Custom Pages
? ¿Te refieres a áreas de menú individuales en algunas páginas o qué?Respuestas:
Como mencioné , iba a comenzar a trabajar en esta necesidad de inmediato, así que estoy avanzando. Dado que estoy derribando estos, pensé que es mejor comenzar a publicarlos. Aún así, si alguien más puede / publicará (algunas de) las partes que no he hecho, estaré encantado de permitirle copiar lo que haya hecho que no haya hecho y seleccionar su respuesta como la mejor respuesta. Hasta entonces, voy a comenzar a publicar el código.
Primera cosa: Incluye
wp-load.php
:Como estamos creando un archivo independiente en la raíz del sitio web para ejecutar la inicialización que solo se usará para "arrancar" un sitio (lo llamé mío
/my-init.php
) , comenzamos por incluir/wp-load.php
para cargar las funciones de API de WordPress:Crear usuarios para el sitio
Utilizaremos la
wp_insert_user()
función ubicada en/wp-includes/registration.php
para crear nuestros usuarios. Este archivo no se carga de manera predeterminada, por lo que tendremos que cargarlo nosotros mismos con una llamada arequire_once()
.También usaremos la
get_user_by()
función para ver primero si el usuario ya ha sido creado; no es necesario ejecutar el código dos veces si no lo han hecho. NOTA: Este es un patrón que seguirá; por ejemplo, nuestro script no debe duplicar ni sobrescribir nada si se llama varias veces, especialmente después de que los usuarios hayan agregado o cambiado datos para cualquiera de los elementos que planeamos inicializar.Eliminar el complemento "Hello Dolly"
Para eliminar el complemento "Hello Dolly" (lo siento Matt ) usaremos la
delete_plugins()
función.delete_plugins()
espera una matriz de rutas de archivos que son relativas al/wp-content/includes/
directorio. Para el complemento Hello Dolly, la ruta del archivo es simplementehello.php
porque el complemento Hello Dolly no está almacenado en su propio directorio, pero para la mayoría de los complementos será en forma de{$subdir}\{$filename}.php
; es decir, la ruta del archivo para Akismet esakismet/akismet.php
.Sin embargo,
delete_plugins()
no está disponible hasta que lo hayamos incluido/wp-admin/includes/plugin.php
y también hay una dependencia conwp-admin/includes/file.php
losrequire_once()
dos antes de llamardelete_plugins()
. Finalmente, usamosWP_PLUGIN_DIR
constante combinado confile_exists()
para ver si el archivo de complemento principal existe antes de que intentemos eliminarlo (no es importante si tratamos de eliminar un archivo faltante, pero es más elegante verificarlo primero y es posible que necesite saber cómo por alguna otra razón) :Tenga en cuenta que a veces
delete_plugins()
fallará debido a los permisos de archivo o tal vez el hecho de que un complemento está activado actualmente o alguna otra razón que primero deberá resolver, pero para nuestro caso de uso Hello Dolly desaparece sin luchar.Descarga, instalación y activación de complementos de repositorio
En realidad, no necesito descargar complementos desde el repositorio en este momento (estaba pensando que sería bueno tenerlo) vamos a dejar pasar este requisito y volver a visitarlo más tarde.
Activando sus complementos
El siguiente paso es activar nuestros propios complementos personalizados. Asumimos que ya los hemos subido al directorio de complementos y todo lo que necesitamos para hacerlo es activarlos para WordPress. ( Nota : esta técnica también funcionará para activar los complementos del repositorio, simplemente no los descargará e instalará primero).
Utilizaremos la
activate_plugin()
función quedelete_plugins()
requiere/wp-admin/includes/plugin.php
que se incluya pero no es necesaria/wp-admin/includes/file.php
en caso de que solo necesite automatizar la activación y no la eliminación.Volveremos a probar la existencia (no es necesario activarla si no está allí, ¿eh?) Y también verificaremos mediante la
is_plugin_active()
función que el complemento aún no se ha activado. Tenga en cuenta que esta vez utilicé algunas variables ($plugin_filepath
y$plugin_dir
) para evitar duplicar el identificador del complemento en numerosas ocasiones.Nuestro ejemplo que sigue activa el complemento
my-custom-plugin.php
que se encuentra en elmy-custom-plugin
subdirectorio:Activando su tema preferido
Activar un tema es un poco más fácil que eliminar o activar un complemento, comparativamente hablando; una llamada a la función es todo lo que se requiere:
switch_theme()
. Laswitch_theme()
función acepta dos (2) parámetros: la plantilla y la hoja de estilo . Bueno, al menos así se llaman los parámetros. Es posible que esté más familiarizado con los términos Tema principal y Tema secundario .Suponiendo que haya creado un tema secundario con el tema predeterminado TwentyTen que viene con WordPress como tema principal y lo llamó "Mi tema personalizado" y lo colocó en el
/wp-content/themes/my-custom-theme
directorio, activaría su tema mediante esta llamada:Pero, ¿y si no es un tema infantil? Eso es fácil, simplemente pase el identificador de directorio slug / theme (es decir, el nombre del subdirectorio
/wp-content/themes
que contiene su tema) como ambos parámetros. Suponiendo que desea activar el tema temático de Ian D Stewart que ha llamadoswitch_theme()
así:Personalmente, creo que es un poco extraño tener que hacer un seguimiento de ambos detalles aquí, así que escribí una función llamada
activate_my_theme()
que primero verifica para asegurarse de que laget_current_theme()
función y, si no, la activa. Solo necesita decirle el tema secundario (también conocido como la "hoja de estilo") y descubrirá el tema principal para usted (también conocido como la "plantilla") tomando los detalles de laget_theme()
función.Un punto clave a tener en cuenta ; la
get_theme()
función espera que se le pase el nombre del Tema secundario, NO su identificador de tema / slug de directorio. (El nombre proviene de la sección "Nombre del tema:" en el encabezado delstyle.css
archivo del tema . Afortunadamente, laget_current_theme()
función también devuelve el nombre).Al inspeccionar el encabezado en el
style.css
archivo del tema predeterminado de WordPress Twenty Ten , vemos que su nombre es, de hecho'Twenty Ten'
:Eliminar la publicación "Hello World"
A continuación, queremos eliminar la publicación "Hello World" . Es posible que haya visto que @Rarst nos ha mostrado cómo usar la
wp_delete_post()
función, que es exactamente lo que necesitamos. Como explicó, el segundo parámetro eliminará completamente la publicación en lugar de moverla a la papelera y el primer parámetro es el$post->ID
.Por supuesto, sería bueno poder especificar la babosa en lugar de la
$post->ID
y, por lo tanto, decido encontrar una manera de hacerlo. Después de un poco de espeleología, descubrí que WordPress tiene una función llamada desafortunadamente llamadaget_page_by_path()
que en realidad nos permite buscar cualquier tipo de publicación por su babosa (desafortunadamente se llama porque podrías pasarla por alto cuando intentas encontrar algo que funcione con tipos de publicación que no sean'page'
).Como pasamos
get_page_by_path()
la constante definida por WordPressOBJECT
, nos devolverá una publicación en forma de un objeto de publicación. Para el tercer parámetro que pasamos'post'
para indicar que queríamos buscar tipos de publicación de'post'
. Dadoget_page_by_path()
que devolverá el objeto de publicación que necesitamos o devolveránull
si ninguna publicación coincide con el slug, podemos verificar la existencia y hacer una búsqueda al mismo tiempo:Nota: Podríamos haber ejecutado código para eliminar cada publicación en la base de datos, pero si lo hubiéramos hecho, no podríamos ejecutar este código nuevamente una vez que hayamos agregado las publicaciones que queremos conservar y esa fue una de nuestras limitaciones de diseño.
Próximo...
Seguiré agregando a esto mientras lo descubro hasta que termine o hasta que alguien más me ayude.
fuente
Establecer enlaces permanentes deseados
Un nuevo (temático) proyecto temático que encontré esta semana que está muy centrado en la funcionalidad HTML5 / CSS3 tiene su propio script 'bootstrap' para crear contenido repetitivo, incorporar configuraciones de enlace permanente, establecer una raíz relativa para la instalación del sitio, etc. Las características se llaman en la activación del tema. El proyecto se llama Roots y el código se puede descargar aquí ; No tomo crédito por este código. Dicho esto, aquí está el código para auto-set / year / postname como la estructura de enlace permanente (y los ganchos de activación a continuación para $ pagenow global se explican aquí: http://foolswisdom.com/wp-activate-theme-actio/ ). .
?>
fuente
Eliminar Hello Post (con comentario)
wp_delete_post( 1, true );
Directamente de los
wp_delete_post()
documentos. El segundo parámetro lo destruye por completo, en lugar de moverlo a la basura.Crea menús
Esto crea un nuevo menú y agrega todas las páginas existentes como elementos. No estoy seguro de que sea completamente correcto, no pude obtener elementos del menú para mostrar la
Page
etiqueta, entre otras cosas. De todos modos mi cerebro se está derritiendo, así que me estoy tomando un descanso. Tal vez alguien pueda actualizar esto a algo más confiable.fuente
Si lo entiendo bien, lo quieres para la instalación inicial, entonces me da miedo que tu enfoque sea totalmente erróneo.
Una forma mucho mejor, más fácil y estandarizada es crear install.php y ponerlo en la carpeta wp-content: se carga automáticamente durante la instalación.
Allí puede poner su propia función wp_install (como la función propia de wordpress usa if (! Function_exist)) para que pueda configurar fácilmente sus opciones, activar complementos, llenar publicaciones iniciales, categorías, etiquetas, usuarios ...
La segunda opción puede ser para la situación, donde desea borrar el wp ya existente (por ejemplo, para la versión de demostración configurada cada 30 minutos usando cron): puede a) truncar la base de datos y usar el procedimiento anterior, o crear el complemento que realiza el mismo.
fuente
install.php
, y segundo hay otros casos de uso dondeinstall.php
no es aplicable. Sí,install.php
tiene uso, pero no se ocupa de los detalles ni de la panacea que implica que es.Echa un vistazo a este script de instalación. https://github.com/Pravdomil/WP-Quick-Install
Tomo sus ideas y algo de código y creo algo que probablemente esté buscando.
Las características son la base de datos de configuración, diferentes idiomas, crear usuarios, establecer configuraciones básicas del sitio, eliminar complementos y plantillas predeterminados, descargar instalar y activar complementos y temas, avatar predeterminado, enlaces permanentes, portada estática.
Siéntase libre de contribuir.
fuente