it-swarm-es.com

¿Buenas prácticas objetivas para el desarrollo de complementos?

Comenzando una wiki de la comunidad para recopilarobjetivomejores prácticas para el desarrollo de complementos. Esta pregunta se inspiró en los comentarios de @ EAMann sobre wp-hackers .

La idea es colaborar sobre cuáles podrían ser las mejores prácticas objetivas para que podamos utilizarlas en algún proceso de revisión de la colaboración comunitaria.

ACTUALIZACIÓN: Después de ver las primeras respuestas, queda claro que necesitamos tener solo una idea/sugerencia/mejor práctica por respuesta y las personas deben revisar la lista para asegurarse de que no haya duplicados antes de publicar.

131
MikeSchinkel

Usar acciones y filtros

Si cree que a la gente le gustaría agregar o alterar algunos datos: proporcione apply_filters () antes de devolver .

PD Una cosa que me parece un poco decepcionante y que su pregunta responde es el porcentaje de complementos que están diseñados solo para usuarios finales, es decir, que no tienen ningún gancho propio. ¿Imagina si WordPress fue diseñado como la mayoría de los complementos? Sería inflexible y una solución muy especializada.

¿Tal vez las cosas serían diferentes si WordPress tuviera la capacidad de instalar automáticamente los complementos de los que dependían otros complementos? Tal como es, normalmente tengo que escribir muchas de las funciones que necesito desde cero porque los clientes quieren las cosas de cierta manera y los complementos disponibles, mientras que el 90% no me permite la flexibilidad de actualizar el 10% restante.

Realmente deseo que aquellos que lideran la comunidad de WordPress identifiquen una manera de asegurar que los complementos sean recompensados ​​por seguir las mejores prácticas (como agregar ganchos para otros desarrolladores) al igual que las buenas respuestas son recompensadas en un sitio StackExchange.

Tomemos un ejemplo de otra pregunta :

Ejemplo: quiero hacer algo en mi complemento cuando alguien retweets un artículo. Si hubiera un gancho personalizado en el popular complemento de retweet que podría conectar y disparar, sería genial. No hay, así que puedo modificar su complemento para incluirlo, pero eso solo funciona para mi copia, y no quiero intentar redistribuir eso.

Relacionado

69
Arlen Beiler

Cargar scripts/CSS con wp_enqueue_script y wp_enqueue_style

Los complementos no deben cargar/intentar cargar versiones duplicadas de archivos JS/CSS, especialmente jQuery y otros archivos JS incluidos en WP Core.

Los complementos siempre deben usar wp_enqueue_script y wp_enqueue_style al vincular archivos JS y CSS y nunca directamente a través de las etiquetas <script>.

Relacionado

53
Rick Curran

Apoyo I18n

Todas las cadenas de salida deben estar vinculadas a un dominio de texto adecuado para permitir la internacionalización por parte de las partes interesadas, incluso si el desarrollador no tiene interés en traducir su propio complemento.

Tenga en cuenta que es muy importante cargar los archivos de idioma durante la acción init para que el usuario pueda conectarse a la acción.

Consulte el Codex: I18n para desarrolladores de WordPress

Y también este artículo: Cargando WP archivos de idioma correctamente .

Desde WordPress 4.6+

WP 4.6 cambió el orden de carga y las ubicaciones verificadas, lo ha hecho mucho más fácil para los desarrolladores y usuarios.

Al considerar un complemento con un dominio de texto 'my-plugin', WordPress ahora PRIMERO buscará un archivo de traducción en:
/wp-content/languages/plugins/my-plugin-en_US.mo

Si no encuentra uno, buscará uno en el que el complemento le indique que busque (normalmente en la carpeta 'idioma' de los pluigns si sigue el códice):
/wp-content/plugins/my-plugin/languages/my-plugin-en_US.mo

Por último, si no se encuentra ningún archivo de idioma, se comprobará la ubicación predeterminada de:
/wp-content/languages/my-plugin-en_US.mo

La primera comprobación se agregó en 4.6 y les da a los usuarios un lugar definido para agregar un archivo de idioma, ya que antes de que necesitaran saber dónde agregó el desarrollador el archivo de idioma, ahora el usuario solo necesita saber el dominio de texto del complemento: / wp -content/languages ​​/ plugins/TEXTDOMAIN-LOCAL.mo


A continuación se muestra la forma antigua (no relevante desde WP 4.6+)

[...]
Finalmente, me gustaría señalar que es importante para cargar archivos de idioma de usuario personalizados desde WP_LANG_DIR antes de cargar los archivos de idioma que vienen con el complemento. Cuando se cargan varios archivos mo para el mismo dominio, se utilizará la primera traducción encontrada. De esta manera, los archivos de idioma proporcionados por el complemento servirán como respaldo para las cadenas no traducidas por el usuario.

public function load_plugin_textdomain()
{
    $domain = 'my-plugin';
    // The "plugin_locale" filter is also used in load_plugin_textdomain()
    $locale = apply_filters( 'plugin_locale', get_locale(), $domain );

    load_textdomain( 
            $domain, 
            WP_LANG_DIR . '/my-plugin/' . $domain . '-' . $locale . '.mo' 
    );
    load_plugin_textdomain( 
            $domain, 
            FALSE, 
            dirname( plugin_basename(__FILE__) ) . '/languages/' 
    );
}
49
EAMann

Asegúrese de que los complementos no generen errores con WP_DEBUG

Siempre pruebe sus complementos con WP_DEBUG activado y lo ideal es que lo tenga activado durante todo el proceso de desarrollo. Un complemento no debe lanzar CUALQUIER error con WP_DEBUG activado. Esto incluye avisos desaprobados e índices sin marcar.

Para activar la depuración, edite su archivo wp-config.php de modo que la constante WP_DEBUG esté configurada en true. Consulte el Codex sobre depuración para más detalles.

47
John P Bloch

Primer uso de las funciones existentes en WordPress Core

Si puede: usar las funciones existentes incluidas en el núcleo de WordPress en lugar de escribir las suyas propias. Solo desarrolle funciones PHP personalizadas cuando no haya una función preexistente apropiada en el núcleo de WordPress.

Uno de los beneficios es que puede usar "registrar avisos en desuso" para monitorear fácilmente las funciones que deben ser reemplazadas. Otro beneficio es que los usuarios pueden ver la documentación de la función en el Codex y comprender mejor lo que hace el complemento, incluso si no son desarrolladores con experiencia en [PHP.

Relacionado

41
kaiser

Desinstalar debería eliminar todos los datos de un plugin

Al eliminarse de una instalación de WordPress, un complemento debe eliminar todos los archivos, carpetas, entradas de base de datos y tablas que creó así como los valores de opciónque creó.

Los complementos pueden ofrecer una opción para exportar/importar configuraciones, para que las configuraciones se puedan guardar fuera de WordPress antes de eliminarlas.

Relacionado

33
Travis Northcutt

Prevenir la inyección SQL con datos de entrada

Un complemento debería desinfectar todas las entradas del usuario recuperadas directa o indirectamente (por ejemplo, a través de $_POST o $_GET) antes de usar valores de entrada para consultar la base de datos MySQL.

Ver: Formateo de sentencias SQL .

33
MikeSchinkel

Utilice una clase y un código PHP5 orientado a objetos

No hay razón para no escribir código PHP5 limpio y orientado a objetos. El soporte de PHP4 se eliminará gradualmente después del próximo lanzamiento (WP 3.1). Por supuesto, puede prefijar todos los nombres de sus funciones para terminar con endlessly_long_function_names_with_lots_of_underscores, pero es mucho más fácil escribir una clase simple y agrupar todo en eso. Además, ponga su clase en un archivo separado y asígnele un nombre correspondiente para que pueda extenderlo y mantenerlo fácilmente:

// in functions.php
require 'inc/class-my-cool-plugin.php';
new MyCoolPlugin();

// in inc/class-my-cool-plugin.php
class MyCoolPlugin {
    function __construct() {
        // add filter hooks, wp_enqueue_script, etc.

        // To assign a method from your class to a WP 
        // function do something like this
        add_action('admin_menu', array($this, "admin"));
    }

    public function admin() {
        // public methods, for use outside of the class
        // Note that methods used in other WP functions 
        // (such as add_action) should be public
    }

    private function somethingelse() {
        // methods you only use inside this class
    }
}
30
Husky

Prefijo todos los elementos del espacio de nombres global

Un complemento debe prefijar correctamente TODOS los elementos del espacio de nombres globales (constantes, funciones, clases, variables, incluso cosas como taxonomías personalizadas, tipos de publicaciones, widgets, etc.). Por ejemplo, no cree una función llamada init(); en su lugar, nombre algo como jpb_init().

Es común usar un prefijo de tres o cuatro letras delante de los nombres o para hacer uso de PHP Característica del espacio de nombres . Comparar: ¿Prefijo de una sola letra para PHP constantes de clase?

Relacionado

29
John P Bloch

La desactivación no debe provocar pérdida de datos

Un complemento no debería elimina cualquiera de sus datos al desactivación.

Relacionado

25
MikeSchinkel

Solo incluye archivos que necesites ...

Si está en la parte delantera, no incluya el código que se relaciona con el área de administración.

23
Denis de Bernardy

Anunciar la pérdida de datos en la desinstalación del complemento

Después de la desinstalación un complemento debería Preguntar a un usuario que eliminará sus datos y recibir una confirmación de que el usuario está bien con la eliminación de los datos antes de hacerlo y un complemento debería también permite al usuario la opción de guardar los datos en la desinstalación. (Esta idea de @EAMann.)

Relacionado

21
MikeSchinkel

Use WordPress (incorporado) Manejo de errores

No solo return; si alguna entrada del usuario fue incorrecta. Entregarles algo de información se hizo mal.

function some_example_fn( $args = array() ) 
{
    // If value was not set, build an error message
    if ( ! isset( $args['some_value'] ) )
        $error = new WP_Error( 'some_value', sprintf( __( 'You have forgotten to specify the %1$s for your function. %2$s Error triggered inside %3$s on line %4$s.', TEXTDOMAIN ), '$args[\'some_value\']', "\n", __FILE__, __LINE__ ) );

    // die & print error message & code - for admins only!
    if ( isset( $error ) && is_wp_error( $error ) && current_user_can( 'manage_options' ) ) 
        wp_die( $error->get_error_code(), 'Theme Error: Missing Argument' );

    // Elseif no error was triggered continue...
}

Un error (objeto) para todos

Puede configurar un objeto de error global para su tema o complemento durante la rutina de arranque:

function bootstrap_the_theme()
{
    global $prefix_error, $prefix_theme_name;
    // Take the theme name as error ID:
    $theme_data = wp_get_theme();
    $prefix_theme_name = $theme_data->Name;
    $prefix_error = new WP_Error( $theme_data->Name );

    include // whatever, etc...
}
add_action( 'after_setup_theme', 'bootstrap_the_theme' );

Más tarde puede agregar errores ilimitados a pedido:

function some_theme_fn( $args )
{
    global $prefix_error, $prefix_theme_name;
    $theme_data = wp_get_theme();
    if ( ! $args['whatever'] && current_user_can( 'manage_options' ) ) // some required value not set
        $prefix_error->add( $prefix_theme_name, sprintf( 'The function %1$s needs the argument %2$s set.', __FUNCTION__, '$args[\'whatever\']' ) );

    // continue function...
}

A continuación, puede recuperarlos todos al final de su tema. De esta manera, no interrumpe el procesamiento de la página y aún puede generar todos los errores para desarrollar

function dump_theme_errors()
{
    global $prefix_error, $prefix_theme_name;

    // Not an admin? OR: No error(s)?
    if ( ! current_user_can( 'manage_options' ) ! is_wp_error( $prefix_error ) )
        return;

    $theme_errors = $prefix_error->get_error_messages( $prefix_theme_name );
    echo '<h3>Theme Errors</h3>';
    foreach ( $theme_errors as $error )
        echo "{$error}\n";
}
add_action( 'shutdown', 'dump_theme_errors' );

Puede encontrar más información en esta Q . Un boleto relacionado para arreglar el "trabajo conjunto" de WP_Error y wp_die() se enlaza desde allí y seguirá otro boleto. Se agradecen los comentarios, críticas y demás.

19
kaiser

Deja que el nombre de la carpeta del plugin sea cambiado

/ plugins/pluginname/{varios}

El "nombre de plugin" utilizado para la carpeta siempre debe ser modificable.

Esto normalmente se maneja definiendo constantes y usándolas constantemente en todo el complemento.

No hace falta decir que muchos complementos populares son pecadores.

Relacionado:

  • plugins_url() para un enlace fácil a los recursos, incluido con el complemento.
19
AndyBeard

Minimizar los nombres agregados al espacio de nombres global

Un complemento debería reducir su impacto tanto como sea posible mediante minimizando la cantidad de nombres que agrega al espacio de nombres global .

Esto se puede hacer encapsulando las funciones del complemento en una clase o usando la característica PHP espacios de nombres . Prefijar todo puede ayudar también, pero no es tan flexible.

Junto a las funciones y clases, un complemento no debería introducir variables globales. El uso de clases normalmente las desactiva y simplifica el mantenimiento de los complementos.

Relacionado

18
hakre

Comentar usando PhpDoc

La mejor práctica es cercana al estilo PhpDoc. Si no usa un IDE como "Eclipse", solo puede mirar en el Manual de PhpDoc .

No tienes que saber exactamente cómo funciona esto. Los desarrolladores profesionales pueden leer el código de todos modos y solo lo necesitan como resumen. Los codificadores y usuarios de Hobby pueden apreciar la forma en que lo explicas en el mismo nivel de conocimiento.

17
kaiser

Utilice la API de configuración antes de add_option

En lugar de agregar opciones a la base de datos a través de la función add_option, debe almacenarlas como una matriz utilizando el API de configuración que se encarga de todo por usted.

Utilice la API de modificaciones de tema antes de add_option

El API de modificaciones es una construcción bastante simple y una forma segura que permite agregar y recuperar opciones. Todo se guarda como valor serializado en su base de datos. Fácil, seguro y sencillo.

17
kaiser

Proteger la privacidad de los usuarios del complemento

(Anteriormente: Comunicación API anónima)

Si un complemento se comunica con un sistema externo o API (por ejemplo, algún servicio web), debe hacerlo de forma anónima o proporcionar al usuario una opción anónima que asegure que no se filtren datos relacionados con el usuario del complemento a una segunda parte que no esté controlada.

16
EAMann

Proporcionar control de acceso mediante el uso de permisos

En muchos casos, es posible que los usuarios no deseen que todos tengan acceso a las áreas creadas por su complemento, especialmente con complementos que realizan múltiples operaciones complejas, por lo que una sola verificación de capacidad no es suficiente.

Como mínimo, realice las comprobaciones de capacidad adecuadas para todos los diferentes tipos de procedimientos para los que se puede utilizar su complemento.

15
eddiemoya

Plugins de host en WordPress.org

Use el SVN repository proporcionado en WordPress.org para hospedar complementos. Facilita la actualización de la experiencia de usuario y, si nunca ha usado SVN antes, le permite entender realmente al usarlo en un contexto que lo justifique.

14
pixeline

Organiza tu código

Siempre es difícil leer el código que no está escrito en el orden en que se ejecuta. Primero incluya/requiera, defina, wp_enqueue_style & _script, etc., luego las funciones que necesita el complemento/tema y, por último, el generador (por ejemplo, la pantalla de administración, las cosas que se integran en el tema, etc.).

Intenta separar cosas como css y js en sus propias carpetas. También intente hacer esto con funciones que solo sean ayudantes, como aplanadores de matrices y similares. Mantener el archivo "principal" tan limpio y fácil de leer como sea posible es una manera que ayuda a los usuarios, a los desarrolladores y a usted, cuando intenta actualizar en un año y no ha visto el código por más tiempo.

También es bueno tener una estructura que repites a menudo, para que siempre encuentres tu camino. Desarrollar en una estructura conocida en diferentes proyectos le dará tiempo para mejorarlo e incluso si su cliente cambia a otro desarrollador, nunca escuchará que "dejó un caos". Esto construye su reputación y debe ser un objetivo a largo plazo.

12
kaiser

Importar/Exportar Configuraciones de Plugins

No es tan común entre los complementos, pero si su complemento tiene (algunos) ajustes, debería proporciona Importación/Exportación de datos como la configuración y la entrada del usuario .

Importar/Exportar mejora la usabilidad de un complemento.

Un ejemplo de complemento que tiene tal funcionalidad de importación y exportación (y también un mecanismo de deshacer) es Breadcrumb NavXT (Wordpress Plugin) (revelación completa: un poco de código por mi parte, la mayoría lo ha hecho mtekk) .

Relacionado

12
hakre

Morir con estilo

muere de una manera decente Todas las funciones de los complementos (e incluso los temas) deben usar wp_die() en lugares críticos para ofrecer al usuario un poco de información sobre lo que sucedió. Los errores de php son molestos y wp_die puede dar al usuario un mensaje de estilo agradable sobre lo que el complemento (o ellos) hizo mal. Además, si el usuario ha desactivado la depuración, el complemento simplemente se romperá.

Usar wp_die() también ayuda a que sus complementos/temas sean compatibles con wordpress testsuite .

11
kaiser

Proporcionar pantallas de ayuda para los usuarios.

Es mejor decir RTFM (haga clic en ayuda) como respuesta que tener que responder la pregunta una y otra vez.

/**
  * Add contextual help for this screen
  * 
  * @param $rtfm
  * @uses get_current_screen
  */ 
  function ContextualHelp( /*string*/ $rtfm) 
  { 
     $current_screen = get_current_screen();
     if ($current_screen->id == $this->_pageid) 
     {
        $rtfm .= '<h3>The WordPress Plugin - Screen A</h3>';
        $rtfm .= '<p>Here are some tips: donate to me ' .
     }
     return $rtfm; 
  }
add_action('contextual_help', array($this,'ContextualHelp'),1,1);

update/note: (ver comentarios de kaiser): el ejemplo anterior se debe usar en una clase

11
edelwater

Ofrezca formularios extensibles

Cuando un complemento ofrece la posibilidad de ingresar datos, siempre debe tener un enlace al final, justo antes del botón "enviar" y/o "reiniciar", para que los desarrolladores puedan extender el formulario fácilmente no solo con los campos, sino también con los botones.

Ver: API de configuración

Relacionado

10
kaiser

incluye función siempre a través de Hook, no directamente.

Ejemplo:

  • No utilice para incluir la clase del complemento a través de un nuevo sin gancho

  • Usa los plugins de Hook_loaded

    // add the class to WP                                   
    function my_plugin_start() {                                                               
        new my_plugin();   
    }                                                        
    add_action( 'plugins_loaded', 'my_plugin_start' );
    

Actualización: un pequeño ejemplo en vivo: Plugin-svn-trunk-page y un pseudo ejemplo

//avoid direct calls to this file where wp core files not present
if (!function_exists ('add_action')) {
        header('Status: 403 Forbidden');
        header('HTTP/1.1 403 Forbidden');
        exit();
}

if ( !class_exists( 'plugin_class' ) ) {
    class plugin_class {

        function __construct() {
        }

    } // end class

    function plugin_start() {

        new plugin_class();
    }

    add_action( 'plugins_loaded', 'plugin_start' );
} // end class_exists

También puede cargar a través de mu_plugins_loaded en multisite-install, ver el códice para referencia de acción: http://codex.wordpress.org/Plugin_API/Action_Reference También aquí puede ver cómo inlcude wP con este gancho: http://adambrown.info/p/wp_hooks/hook/plugins_loaded?version=2.1&file=wp-settings.php Lo uso muy a menudo y no es tan difícil ni tan temprano, mejor como un nuevo disco duro clase();

9
bueltge

La descripción de su complemento debe detallar con precisión las funciones de su complemento. Hay 10 complementos de post destacados. Todos ellos muestran publicaciones destacadas, sin embargo, muchos tienen características diferentes. Debería ser fácil comparar su complemento con complementos similares leyendo la descripción.

Debes evitar presumir de lo sencillo que es tu plugin a menos que sea realmente muy básico. Debe incluir enlaces útiles en la descripción, como el enlace a la configuración.

8
Greg

Plugins de licencia bajo una licencia compatible con GPL

Los complementos y temas deben tener licencia bajo una licencia compatible con WordPress. Esto les permite ser redistribuidos con WordPress como un "programa". Una licencia recomendada es la GPL . Tenga cuidado de que todas las bibliotecas de códigos incluidas con el complemento sean compatibles con la misma licencia.

(Esto ha sido ha sido un problema y grave punto de debate tanto en el pasado como presente .)

8
EAMann

Minimice los efectos secundarios de las fuentes de datos remotas y los servicios web

Un complemento debería Servicio web de caché/escudo y/o Solicitudes de XMLRPC/SOAP a través de una capa de proveedor de datos/almacenamiento en caché si las usa para no hacer solicitudes de espera iniciales ( lento) respuesta del servicio web.

Eso incluye la descarga de RSS y otras páginas. Diseña tus complementos que soliciten datos en segundo plano.

Un PASO posible es (tome la publicación en ping.fm como ejemplo): cree una tabla de búfer, digamos: ping_fm_buffer_post (fecha, hora, mensaje, tiempo enviado, estado)

  1. Para cada vez que desee enviar una actualización a ping.fm, agréguela a esta tabla.
  2. Ahora, necesitamos crear un complemento para manejar estos datos. Este complemento se ejecutará a través de crontab para verificar todas las actualizaciones que aún no se hayan enviado.
  3. Como tenemos esta tabla, también podemos enumerar todos los mensajes enviados a ping.fm y verificar el estado de cada publicación. En caso de que haya un problema en el lado de ping.fm, podemos volver a enviarlo.
7
hakre

Prueba tu plugin

Definitivamente deberíamos tener algunas herramientas de prueba en nuestro entorno de desarrollo de complementos.

Basado en esta respuesta por Ethan Seifert a una pregunta de prueba, estas son buenas prácticas a seguir:

  • La prueba de unidad debe probar la menor cantidad de comportamiento que una clase puede realizar.
  • Cuando llegue al nivel de las pruebas funcionales, aquí es donde puede probar su código con las dependencias de Wordpress.
  • Dependiendo de lo que haga su complemento, considere usar pruebas basadas en Selenium que prueben la presencia de datos en el DOM mediante el uso de ID
7
Fernando Briano

Usar nombres propios

Nombre ganchos y filtros (clases, funciones y variables), para que que las personas puedan identificarlos incluso en un año , cuando ya no recuerdan más, de dónde proviene ese pedazo de pastel o código. No importa si los nombres de gancho/filtro se alargan. Ex. youruniquename_hook/filter_whatitdoes.

  • Si su archivo contiene una clase llamada "dbdbInit", entonces el archivo que contiene la clase debe llamarse "dbdbInit.class.php".
  • Si ingresó a su dbdbInit- clase, una función que registra ej. custom_post_types, luego llámalo register_custom_post_types().
  • Si tienes una matriz que contiene los nombres para custom_post_types, llama a la variable donde se asigna la matriz $custom_post_type_names.
  • Si tienes una función que maneja una matriz escribe function array_handler( $array ) { // handle the array} ..
  • Solo intente nombrar las cosas de manera que sepa qué hace el letrero/a dónde pertenece por su nombre.

Otra cosa: si tiene que depurar cosas, entonces, en el 99% de los casos, recibe todos sus mensajes no solo para su código, sino también para wordpress. Así que trate de usar el mismo prefijo ex. "dbdb" para sus clases, funciones públicas y variables/objetos. De esta forma podrás encontrarlos fácilmente entre cientos de archivos. (Wordpress carga 64 archivos antes de tu tema y aproximadamente 1,550 funciones, sin hablar de enlaces y filtros).

6
kaiser

Preocúpate de futuras versiones de WordPress y temas

Nota: Después de volver a leer este consejo, ahora paso a un lado de esta práctica, ya que comprobar que todas las funciones existen pueden ralentizar su sitio.

Verifique si las funciones están en desuso directamente en su tema.

Este es un ejemplo de "podría ser así".

if ( ! function_exists( 'wp_some_fn' ) ) 
{
    $theme_data = wp_get_theme();
    $error = new WP_Error( 'wp_some_fn', sprintf( __( 'The function %1$s is deprecated. Please inform the author', TEXTDOMAIN ), "Theme: {$theme_data->Name}: Version {$theme_data->Version}" );

    // abort
    if ( is_wp_error( $error ) )
        return print $error->get_error_message();
} 
// else if no error - the function works and exists
wp_some_fn();

Para el manejo adecuado y de mejores prácticas de errores, vea esta respuesta: enlace

Podrías dejar caer incluso la $ causa en la función. Esto le ayudará a usted y a sus usuarios a mantenerse al día con las funciones o clases de su tema que podrían cambiar.

6
kaiser

Use los estándares de codificación de WordPress

http://codex.wordpress.org/WordPress_Coding_Standards

¿Sabes lo fácil que es actualizar el código en el que has trabajado en comparación con el código que alguien más ha reunido? Los estándares de codificación hacen que sea más fácil para cualquier desarrollador que trabaje en un proyecto entrar y ver qué está pasando.

Sabemos que su plugin o tema es suyo, y la forma en que rompe sus líneas y agrega sus llaves es una expresión de su individualidad. Cada sangría es una declaración cuidadosamente pensada. Pero con su código personalizado, está contribuyendo a WordPress, incluso si su código no está en la aplicación central. Los estándares de codificación ayudan a los desarrolladores a actualizarse rápidamente con su código.

6
gabrielk

Desacoplar del código del núcleo de WordPress

Un complemento debería reduce el impacto de la API de WordPress al mínimo necesario para separar el código del complemento de un código de WordPress. Esto reduce el impacto de los cambios dentro del código base de WordPress en el complemento. Además, esto mejora la compatibilidad de versión cruzada de su código de complemento.

Esto no significa no usar las funciones de WordPress (úselas, como Reutilizar las funciones existentes sugiere), pero no para combinar su código con las funciones de WordPress sino para separar la lógica empresarial de sus complementos. De la funcionalidad de WordPress.

6
hakre

Utilice las opciones de wp para las cadenas de salida de plugin

Para hacer que el complemento sea fácil de usar y personalizable, todas las cadenas de salida deben ser modificables. La mejor manera de hacerlo es usar wp-options para almacenar las cadenas de salida y proporcionar un servidor para cambiar los valores predeterminados. El complemento no debe usar las cadenas mostradas que no se pueden cambiar fácilmente con el complemento del complemento.

Por ejemplo: Sociable: le da la posibilidad de cambiar la oración que aparece antes de que los íconos partan "compartir y disfrutar:"

5
hannit cohen

Utilice desinstalar, activar y desactivar ganchos.

Hay tres ganchos diferentes para esto:

  • Desinstalar register_uninstall_hook();
  • Desactivación register_deactivation_hook();
  • Activación register_activation_hook();

Una instrucción detallada con un ejemplo de trabajo se puede encontrar aquí. .

3
kaiser