OOP es el estándar para un gran código, es flexible, escalable y ampliable. Los desarrolladores de WordPress necesitan un marco en el que basar su código, algo que se puede trasladar fácilmente a otros proyectos para ahorrar la invención de la rueda dos veces por semana. Se trata de trabajar más inteligentemente, no más difícil.!
No hay nada peor que activar un complemento para encontrar que mata su sitio web porque dos autores de complementos tienen una función global llamada initialise () !
Todo código necesita un objetivo, nunca debe comenzar a escribir algo (libro, complemento, tema o tutorial) sin un objetivo claro y definido de dónde quiere ir..
Para este tutorial, usaremos una clase de OOP básica para hacer lo siguiente en un complemento.
Comencemos por crear una clase vacía con nada más que una función constructora e instanciarla en una variable global (¡esto es realmente genial, lo explicaré más adelante!)
Luego, comenzamos a delegar la funcionalidad del constructor, definimos algunas rutas de complementos y creamos funciones separadas para agregar acciones para enganchar en WordPress, todas llamadas automáticamente desde el constructor de la clase..
plugin_defines (); $ this-> setup_actions (); / ** * Define que se usará en cualquier lugar de WordPress después de que se haya iniciado el complemento. * / function plugin_defines () define ('MY_PLUGIN_PATH', trailingslashit (WP_PLUGIN_DIR. '/'. str_replace (basename (__FILE__), "", plugin_basename (__FILE__)))); define ('MY_PLUGIN_URL', trailingslashit (WP_PLUGIN_URL. '/'. str_replace (basename (__FILE__), "", plugin_basename (__FILE__)))); / ** * Configure las acciones para conectar el complemento a WordPress en los lugares apropiados * / function setup_actions () // Engage. $ OOP_Class = new OOP_Class (); ?>
Esto se ve bien hasta ahora, todo está configurado, pero en realidad aún no está haciendo mucho. Sigamos adelante con la funcionalidad requerida..
Configura las colas de plugin desde template_redirect
// ¿Hacer algo en template_redirect, tal vez poner en cola algunos scripts mientras no esté en admin? if (! is_admin ()) $ this-> plugin_enqueues ();
Y la función plugin_enqueues:
/ ** * Se utiliza para poner en cola los estilos y scripts necesarios para el complemento. * / function plugin_enqueues () // Enqueue jQuery wp_enqueue_script ('jquery'); // Nuestro script de inicio wp_enqueue_script ('plugin_init', MY_PLUGIN_URL. 'Js / init.js', array ('jquery')); // Algunos estilos básicos: wp_enqueue_style ('plugin_style', MY_PLUGIN_URL. 'Css / pluginstyles.css');
Configure una variable de clase antes que el constructor (solo para mantenerlo todo limpio).
// Los enlaces a las páginas secundarias. Falso por defecto. var $ child_page_links = false;
Defina la función para recuperar los enlaces de la página secundaria y establezca el HTML en el objeto.
/ ** * Establece la variable de enlaces de páginas secundarias de esta clase. * / function set_child_page_links () global $ post; // Obtener las páginas secundarias de la página actual $ children = get_pages (array ('child_of' => $ post-> ID)); if (! empty ($ children)): $ out = ''; // Recorrer las páginas secundarias, generando algo de HTML con la imagen, el enlace y el título de la página secundaria. foreach ($ children as $ child) $ img = get_the_post_thumbnail ($ child-> ID, 'thumbnail'); $ title = $ child-> post_title; $ url = get_permalink ($ child-> ID); $ fuera. = ''; else: // No tenemos hijos, necesitamos ser capaces de manejar eso. $ out = falso; terminara si; $ this-> child_page_links = $ out;'; $ out. = ''. $ img. ''. esc_html ($ título). ''; $ fuera. = ''; $ out. = '
Y ejecútalo desde la función template_redirect
// Sólo en una página. if (is_page ()) $ this-> set_child_page_links ();
Aquí es donde esto comienza a ser bueno, ya que nuestro código abreviado no tendrá ninguna opción, podemos usar lo que se llama un "captador", que simplemente devuelve la variable de clase.
/ ** * Getter para los enlaces de la página secundaria * / function return_child_pages () return $ this-> child_page_links;
Esta función se puede enganchar en la API de shortcode de la siguiente manera:
add_shortcode ('Child_Pages', array ($ this, 'return_child_pages'));
Además, como hemos creado una instancia de todo esto en template_redirect, no hay necesidad de regenerar los enlaces, podemos simplemente escupirlos en cualquier lugar, como esto:
child_page_links) echo $ OOP_Class-> child_page_links; ?>
Y el fragmento de JavaScript. (Esto va en js / init.js en nuestra carpeta de plugins). Esto resalta el enlace al pasar y pide permiso al usuario para continuar a la página secundaria..
jQuery (document) .ready (function ($) $ ('.child_page a') .click (function () if (confirme ("¿Está seguro de que desea ir a la página secundaria?")) return true ; else return false;). hover (function () $ (this) .css ('background-color', '#EFEFEF');, function () $ (this) .removeAttr (' estilo ');););
Por último, pero no menos importante, algunos estilos CSS básicos para nuestro complemento (/css/pluginstyles.css).
.child_page_wrapper .child_page float: left; ancho: 33% .child_page_wrapper .child_page a display: block; .child_page_wrapper .child_page span display: block; text-align: center; .child_page_wrapper .child_page img display: block; margen: 0 auto;
Esta clase se puede usar en casi cualquier situación, y es adecuada para el uso dentro del sistema de WordPress. Se puede usar una vez para un tema y luego otra configuración de clase para alguna funcionalidad integrada (lo que significa que casi podemos copiar / pegar la funcionalidad individual de proyecto a proyecto con facilidad) y luego nuevamente para un complemento personalizado rápido para esa funcionalidad genial para su cliente. Necesidades que es demasiado exageradas en los complementos disponibles..
Si se escriben para ser "secciones" independientes del sitio, entonces las clases podrían elevarse fácilmente a su próximo proyecto, haciendo que la funcionalidad avanzada sea rápida y fácil para usted!
Aunque realmente no hemos tocado el potencial de las clases y los objetos, este es un gran comienzo para entender la flexibilidad y la capacidad de extensión de la POO..
También tenga en cuenta que almacenar objetos en PHP así ocupa espacio en la memoria de PHP, por lo que debe utilizarlos!!