Code Snippets para Wordpress: Los 20 Mejores

Hace un par de años atrás, había experimentado con los no tan famosos code snippets para Wordpress.

Use algunos code snippets para personalizar la experiencia de Wordpress y para poner anuncios de Adsense en mi sitio.

Los plugins más famosos en el repositorio de Wordpress son Code Snippets Pro y Woody Ad Snippets.

Los code snippets son pequeños códigos que te permiten personalizar tu sitio, monetizarlo, mejorar su posicionamiento pero lo más importante es que te ahorras instalar algunos plugins o te ahorrar el bloat que tienen muchos plugins en el repositorio.

Estos son los mejores code snippets que pude encontrar por la web, muchos de estos los tengo en uso en mi sitios.

Remover Widgets

Este es un code snippets que puedes usar para remover widgets que no estas usando

// unregister all widgets
function unregister_default_widgets() {
unregister_widget('WP_Widget_Pages');
unregister_widget('WP_Widget_Calendar');
unregister_widget('WP_Widget_Archives');
unregister_widget('WP_Widget_Links');
unregister_widget('WP_Widget_Meta');
unregister_widget('WP_Widget_Search');
unregister_widget('WP_Widget_Text');
unregister_widget('WP_Widget_Categories');
unregister_widget('WP_Widget_Recent_Posts');
unregister_widget('WP_Widget_Recent_Comments');
unregister_widget('WP_Widget_RSS');
unregister_widget('WP_Widget_Tag_Cloud');
unregister_widget('WP_Nav_Menu_Widget');
}
add_action('widgets_init', 'unregister_default_widgets', 11);

Bloquear Solicitudes Largas

Este es un code snippet que bloquea automáticamente solicitudes largas

global $user_ID; if($user_ID) {
if(!current_user_can('administrator')) {
if (strlen($_SERVER['REQUEST_URI']) > 255 ||
stripos($_SERVER['REQUEST_URI'], "eval(") ||
stripos($_SERVER['REQUEST_URI'], "CONCAT") ||
stripos($_SERVER['REQUEST_URI'], "UNION+SELECT") ||
stripos($_SERVER['REQUEST_URI'], "base64")) {
@header("HTTP/1.1 414 Request-URI Too Long");
@header("Status: 414 Request-URI Too Long");
@header("Connection: Close");
@exit;
}
}
}

Bloquear el Desactivar y Eliminar Plugins

Este code snippets impide que los usuarios de un sitio desactiven y eliminen plugins

add_filter( 'plugin_action_links', 'disable_plugin_deactivation', 10, 4 );
function disable_plugin_deactivation( $actions, $plugin_file, $plugin_data, $context ) {

if ( array_key_exists( 'deactivate', $actions ) && in_array( $plugin_file, array(
'woocommerce/woocommerce.php'
)))
unset( $actions['deactivate'] );
return $actions;
}

Especifica el numero de los plugins que deseas controlar con este code snippets y los plugins no tendrán el botón de desactivar

Remover JQuery Migrate

JQuery Migrate es algo que ya no cargará en tu sitio a partir de la versión 5.7 de Wordpress.

Para todos las versiones anteriores, puedes usar este Code Snippets para no volverlos a ver en la cascada de GTMetrix

function isa_remove_jquery_migrate( &$scripts ) { if( !is_admin() ) { $scripts->remove( 'jquery' ); $scripts->add( 'jquery', false, array( 'jquery-core' ), '1.12.4' ); } } add_filter( 'wp_default_scripts', 'isa_remove_jquery_migrate' );

Fuente: Clearfy

Desactivar las RSS Feeds

Este es un code snippet que te ayudará a desactivar las feeds de tu sitio.

// disable rss feeds on your wordpress blog
function wcs_disable_rss_feeds() {
    wp_die( __( 'Feed is not available. Please return back to the <a href="'. get_bloginfo( 'url' ) .'">homepage</a>!' ) );
}

add_action( 'do_feed', 'wcs_disable_rss_feeds', 1 );
add_action( 'do_feed_rdf', 'wcs_disable_rss_feeds', 1 );
add_action( 'do_feed_rss', 'wcs_disable_rss_feeds', 1 );
add_action( 'do_feed_rss2', 'wcs_disable_rss_feeds', 1 );
add_action( 'do_feed_atom', 'wcs_disable_rss_feeds', 1 );

Remover los enlaces de las RSS Feeds

Este code snippet complementa el code snippet anterior borrando los enlaces de las RSS feeds de tu sitio.

remove_action( 'wp_head', 'feed_links_extra', 3 );
remove_action( 'wp_head', 'feed_links', 2 );

Remover Paginas de Adjuntos de WordPress

Este es un code snippet que permite remover las paginas de adjuntos y redireccionarlas al visitante a la entrada o pagina a la cual pertenecen

add_action('template_redirect', 'template_redirect_attachment');

function template_redirect_attachment() {

global $post;

// Redirects to the post page:

if (is_attachment()) {

wp_redirect(get_permalink($post->post_parent));

}

}

Fuente: Clearfy

Desactivar el HeartBeat

El HeartBeat de Wordpress es util si tiene un equipo editando el contenido ya que este te alerta cuando otro usuario esta editando alguna publicación del sitio.

Si eres el único administrador del sitio o si simplemente no le encuentras valor a esta función, este el code snippet que necesitas

add_action( 'init', 'stop_heartbeat', 1 );
function stop_heartbeat() {
wp_deregister_script('heartbeat');
}

Remover la Versión de CSS y JS en Wordpress

function _remove_script_version( $src ){$parts = explode( '?', $src );return $parts[0];}//For Scriptsadd_filter( 'script_loader_src', '_remove_script_version', 15, 1 );//For Stylesadd_filter( 'style_loader_src', '_remove_script_version', 15, 1 );

Deshabilitar el Archivo XMLRPC

add_filter( 'xmlrpc_enabled', '__return_false' );

Remover Emojis de Wordpress

Este es un code snippet que removerá los emojis. Esto se puede considerar como una mejora de velocidad

/**
 * Disable the emoji's
 */
function disable_emojis() {
 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_action( 'admin_print_styles', 'print_emoji_styles' ); 
 remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
 remove_filter( 'comment_text_rss', 'wp_staticize_emoji' ); 
 remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
 add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' );
 add_filter( 'wp_resource_hints', 'disable_emojis_remove_dns_prefetch', 10, 2 );
}
add_action( 'init', 'disable_emojis' );

/**
 * Filter function used to remove the tinymce emoji plugin.
 * 
 * @param array $plugins 
 * @return array Difference betwen the two arrays
 */
function disable_emojis_tinymce( $plugins ) {
 if ( is_array( $plugins ) ) {
 return array_diff( $plugins, array( 'wpemoji' ) );
 } else {
 return array();
 }
}

/**
 * Remove Emoji in WordPress automatically CDN hostname from DNS prefetching hints.
 *
 * @param array $urls URLs to print for resource hints.
 * @param string $relation_type The relation type the URLs are printed for.
 * @return array Difference betwen the two arrays.
 */
function disable_emojis_remove_dns_prefetch( $urls, $relation_type ) {
 if ( 'dns-prefetch' == $relation_type ) {
 /** This filter is documented in wp-includes/formatting.php */
 $emoji_svg_url = apply_filters( 'emoji_svg_url', 'https://s.w.org/images/core/emoji/2/svg/' );

$urls = array_diff( $urls, array( $emoji_svg_url ) );
 }

return $urls;
}

Remover Query Strings

function remove_cssjs_ver( $src ) {
if( strpos( $src, '?ver=' ) )
 $src = remove_query_arg( 'ver', $src );
return $src;
}
add_filter( 'style_loader_src', 'remove_cssjs_ver', 10, 2 );
add_filter( 'script_loader_src', 'remove_cssjs_ver', 10, 2 );

Remover RSD Link

remove_action( 'wp_head', 'rsd_link' ) ;

Remover Short Link

remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0);

Deshabilitar Embeds

function disable_embed(){
wp_dequeue_script( 'wp-embed' );
}
add_action( 'wp_footer', 'disable_embed' );

Esconder la Versión de WordPress

remove_action( 'wp_head', 'wp_generator' ) ;

Remover WLManifest

remove_action( 'wp_head', 'wlwmanifest_link' ) ;

Deshabilitar Self Pingback

function disable_pingback( &$links ) {
 foreach ( $links as $l => $link )
 if ( 0 === strpos( $link, get_option( 'home' ) ) )
 unset($links[$l]);
}
add_action( 'pre_ping', 'disable_pingback' );

Añadir una Meta Descripción

// add meta description tag without plugin in wordpress
function wcs_add_meta_description_tag() {
    global $post;
    if ( is_single() ) {
        $meta = strip_tags( $post->post_content );
        $meta = strip_shortcodes( $post->post_content );
        $meta = str_replace( array("\n", "\r", "\t"), ' ', $meta );
        $meta = mb_substr( $meta, 0, 125, 'utf8' );
        echo '<meta name="description" content="' . $meta . '" />' . "\n";
    }
}
add_action( 'wp_head', 'wcs_add_meta_description_tag' , 2 );

Remover el DNS Prefetch a Wordpress.org de la Cabecera de WordPress

Este es code snippet para remover el DNS Prefetch a WordPress.org de la cabecera de WordPress.

add_filter( 'wp_resource_hints','josem_remove_dns_prefetch',20,2);
function josem_remove_dns_prefetch( $urls, $relation_type ){
	$n = 0;
	$k = false;
	foreach( $urls as $url ){
		if( false !== strpos( $url,'s.w.org' ) ){
			$k = $n;
		}
		++$n;
	}
	if( $k ){
		unset( $urls[$k] );
	}
	return $urls;
}

Credito a Jose Mortellaro

Recursos Adicionales

Estos son algunos sitios que contienen Code Snippets para WordPress que podrian resultar de utilidad para muchos usuarios:

Fuentes

Estas son algunas publicaciones que contribuyeron a la creación de esta guía

  1. How To Configure And Manage Heartbeat In WordPress
  2. How To Remove JS & CSS Versions in WordPress With Clearfy
  3. XML-RPC and how to remove it from WordPress
  4. How to disable Emojis in WordPress without a Plugin
  5. Add Meta Description Tag Without Plugin in WordPress
  6. WordPress Code Snippet Library

Información Relacionada

Esta es una serie de información relacionadas con velocidad y seguridad

  1. Cómo Acelerar tu Sitio de WordPress: El Dilema
  2. Full Page Caching de CloudFlare
  3. Reseña sobre CloudFlare APO: ¿Debería Usarlo?
  4. Cómo Usar la Cascada de GTMetrix
  5. Reseña sobre WP CloudFlare Super Page Cache
  6. Vulnerabilidad del Día Cero en WordPress
  7. Seguridad de WordPress sin Plugins: 8 Pasos
  8. Bloquear un Proveedor de Hosting por ASN
  9. Reseña sobre WordFence: Gratis y Premium
  10. Reseña Honesta de SecuPress: ¿Es el Mejor?