
Seguimos otra semana más aventurándonos con temas muy técnicos. Esta vez Joan Artés dará una masterclass sobre como Debuguear con WordPress.
El patrocinador
Hoy hablamos acerca del hosting de hosting WooCommerce de SiteGround. El alojamiento perfecto para nuestros proyectos de comercio electrónico.
Enlaces comentados en el programa
- Curso
intermedio de Storefront - Komikus.es
- Complianz.io
- Complianz GDPR
- Plugin User Switching
- Plugin Developer
- PHP function_exists()
- Advanced PHP Error Handling via
htaccess - Debugging in WordPress – WordPress Codex
// Código agregar CPT
add_filter( 'pre_get_posts', 'afegim_post_types' );
function afegim_post_types( $query ) {
if ( ( is_home() && $query->is_main_query() ) || is_feed() ) $query->set( 'post_type', array( 'noticias', 'podcast', 'curso', 'programa', 'tutorial' ) );
return $query;
}
// Configuraciones wp-config.php
// Activamos modo debug
define( 'WP_DEBUG', true );
// Activamos el modo de debug log
define( 'WP_DEBUG_LOG', true );
// Escondemos los errores
define( 'WP_DEBUG_DISPLAY', false );

Enlaces de actualidad
- Slack Acquires HipChat, Moves Blog from Medium to WordPress
- Plugin Review: Theme Support for Gutenberg
- WordPress Coding Standards 1.0.0 Released
- WordPress Developers: Learn How to Convert Shortcodes to Gutenberg Blocks
Despedida
Recordad que nos podéis dejar y votar en la página de ideas posibles temas de los que queréis que hablemos en el podcast.
Ya sabéis que podéis encontrar a Joan Boluda en boluda.com, dónde tenéis sus cursos de WordPress, y a Joan Artés en Artesans, dónde tiene su empresa de desarrollo web en WordPress.
Ya sabéis que estáis más que invitados a participar a través de la sección de contacto de la web, a través de la que podéis enviar preguntas, dudas, y sugerencias para nuevos episodios.
Y muchísimas gracias a todos por vuestras 5 estrellas en iTunes y «me gusta» en iVoox.
¡Nos vemos la semana que viene con más WordPress!
¡Buenas Joanes!
Me ha encantado el episodio. Ya me he apuntado unos cuantos trucos más para el próximo debug 🙂
Respecto a Gutenberg, yo creo que lo lanzarán la semana del 3 de Septiembre. Curiosamente, coincidirá con el lanzamiento de otro proyecto super-interesante :p
Un abrazo
Perfecto! 🙂
Hola, chicos. ¿Cuál es el plugin qué habéis mencionado para el debug de WordPress? Ese que hay que descargarlo porque encontrarlo en el repositorio es prácticamente imposible. ¡Gracias!
Hola Diego! Es el de Developer: https://es.wordpress.org/plugins/developer/ Añadido a las notas del programa!
Hola Joan/es
Enhorabuena por el programa!! En cuanto a Gutenberg… yo apunto a la semana de la WordCamp Valencia (15-16 Sep.) y coincidiendo con la vuelta al cole. 🙂
Slds y Feliz Verano!!
Hola! Fieras…
Siguiendo una semana más por aquí y gracias por el contenido de todos los post.
Anotación: Joan Artés, yo también creo que es la semana de 11 septiembre el lanzamiento de Gutenberg 😉
Un abrazo a los dos 🙂
Buenos días,
Para Gutenberg apuesto por la segunda semana de Noviembre.
Saludos
Buenos nenes
Estoy creando unas pestañas para unos productos de WooCommerce y, como los contenidos van a variar según el producto, he creado con ACF varios campos personalizados para incluir el contenido de cada pestaña.
El código para crear la pestaña es:
/**
* Añadir la pestaña “Objetivos”
*/
add_filter( ‘woocommerce_product_tabs’, ‘carlosmdh_woo_objetivos_tab’ );
function carlosmdh_woo_objetivos_tab( $tabs ) {
// Adds the new tab
$tabs[‘test_tab’] = array(
‘title’ => __( ‘Objetivos’, ‘woocommerce’ ),
‘priority’ => 50,
‘callback’ => ‘carlosmdh_woo_objetivos_tab_content’
);
return $tabs;
}
Esto funciona bien y agrega la pestaña en los productos.
El problema me viene al tratar de mostrar en el front end el contenido que he añadido al Custom Field, para ello uso el siguiente código:
function carlosmdh_woo_objetivos_tab_content() {
// Mostrar el contenido del campo de ACF “tab_objetivos”
echo get_field(‘tab_objetivos’); /* Aquí indicamos el nombre del campo personalizado */
}
No da error, pero no pinta en el front end lo que he añadido en la ficha del producto en los campos personalizados.
¿Qué se me escapa?
Buenas gente.
Se solucionó sólo, no preguntéis….
Seguimos!!!
Feliz miércoles
Hola, chicos. En primer lugar, agradeceros la ayuda. Quería comentaros que solucioné el problema que tenía con los capítulos del podcast.
¿Cómo lo he hecho? Sinceramente, ni idea. La única modificación que he realizado ha sido añadir unas líneas de código a un plugin obligatorio de seguridad que tengo, tras ver una charla de Javier Casares. Os lo pego aquí, por si alguien le sirviera. Si, de paso, supiéseis qué podría estar ocasionándolo, avisadme para no volverla a liar. ¡Gracias de nuevo!
//* ———- ELIMINAR CÓDIGO INNECESARIO DE LA CABECERA
remove_action( ‘wp_head’, ‘wp_generator’ );
remove_action( ‘wp_head’, ‘rsd_link’ );
remove_action( ‘wp_head’, ‘wlwmanifest_link’ );
remove_action( ‘wp_head’, ‘start_post_rel_link’ );
remove_action( ‘wp_head’, ‘index_rel_link’ );
remove_action( ‘wp_head’, ‘wp_shortlink_wp_head’ );
remove_action( ‘wp_head’, ‘adjacent_posts_rel_link’ );
remove_action( ‘wp_head’, ‘adjacent_posts_rel_link_wp_head’, 10, 0 );
remove_action( ‘wp_head’, ‘parent_post_rel_link’ );
remove_action( ‘wp_head’, ‘feed_links’, 2 );
remove_action( ‘wp_head’, ‘feed_links_extra’, 3 );
remove_action( ‘wp_head’, ‘print_emoji_detection_script’, 7 );
// Display the link to the Windows Live Writer manifest file.
remove_action(‘wp_head’, ‘wlwmanifest_link’);
// Displays the XHTML generator that is generated on the wp_head hook.
remove_action(‘wp_head’, ‘wp_generator’);
//* ———- OCULTAR EMOJIS
function disable_emojicons_tinymce( $plugins ) {
return is_array( $plugins ) ? array_diff( $plugins, array( ‘wpemoji’ ) ) : array();
}
function disable_wp_emojicons() {
remove_action( ‘admin_print_styles’, ‘print_emoji_styles’ );
remove_action( ‘wp_head’, ‘print_emoji_detection_script’, 7 );
remove_action( ‘admin_print_scripts’, ‘print_emoji_detection_script’ );
remove_action( ‘wp_print_styles’, ‘print_emoji_styles’ );
remove_filter( ‘wp_mail’, ‘wp_staticize_emoji_for_email’ );
remove_filter( ‘the_content_feed’, ‘wp_staticize_emoji’ );
remove_filter( ‘comment_text_rss’, ‘wp_staticize_emoji’ );
add_filter( ‘tiny_mce_plugins’, ‘disable_emojicons_tinymce’ );
add_filter( ‘emoji_svg_url’, ‘__return_false’ );
}
add_action( ‘init’, ‘disable_wp_emojicons’ );
//* ———- AÑADIR CABECERAS
add_action( ‘send_headers’, ‘add_header_seguridad’ );
function add_header_seguridad() {
header( ‘X-Content-Type-Options: nosniff’ );
header( ‘X-Frame-Options: SAMEORIGIN’ );
header( ‘X-XSS-Protection: 1;mode=block’ );
}
//* ———- BLOQUEAR VALORES =?ver
function wpdanger_remove_ver($src, $handle) {
$handles = [‘style’,’script’];
if(strpos($src, ‘ver=’) && !in_array($handle, $handles, true))
$src = remove_query_arg(‘ver’, $src);
return $src;
}
add_filter(‘style_loader_src’, ‘wpdanger_remove_ver’, 9999, 2);
add_filter(‘script_loader_src’, ‘wpdanger_remove_ver’, 9999, 2);
//* ———- BLOQUEAR XML-RPC
add_filter(‘xmlrpc_enabled’, ‘__return_false’);
//* ———- OTROS
// Sets the cookies used to store an unauthenticated commentator’s identity. Typically used to recall previous comments by this commentator that are still held in moderation.
remove_action(‘set_comment_cookies’, ‘wp_set_comment_cookies’);
// Sets the display status of the admin bar.
add_filter(‘show_admin_bar’,’__return_false’);
// Display the generator XML or Comment for RSS, ATOM, etc.
add_filter(‘the_generator’, ‘__return_false’);