17 Funciones y Snippets útiles para Wordpress

17 Funciones y Snippets útiles para Wordpress

Los code snippets son piezas reutilizables de código (HTML, CSS, JavaScript, etc) que se pueden insertar en una aplicación web con sólo un par de pulsaciones de teclas o hotkeys, lo cual facilita y agiliza el desarrollo de nuestra aplicación.

Hay veces en que queremos hacer algo que vimos en otras webs o blogs, o darle alguna funcionalidad extra al nuestro, es allí que podemos valernos de estos snippets o fragmentos de código re-utilizables.

Hasta podemos combinar el uso de estos para lograr una nueva funcionalidad para nuestro wordpress.

1. Increase the excerpt field height

add_action('admin_head', 'excerpt_textarea_height');  
function excerpt_textarea_height() {      
echo'      
<style type="text/css">          
    #excerpt{ height:500px; }      
</style>     
 ';  
}

2. Dynamically create and attach sidebars to pages/posts

    $dynamic_widget_areas = array(  		
/* rename or create new dynamic sidebars */  		
"Sidebar 01",  		
"Sidebar 02",  		
"Sidebar 03",  		
"Sidebar 04",  		
"Sidebar 05",  		
"Sidebar 06",  		
"Sidebar 07",  		
"Search Template",  		
);  
if ( function_exists('register_sidebar') ) {      
foreach ($dynamic_widget_areas as $widget_area_name) {          
register_sidebar(array(             
'name'=> $widget_area_name,             
'before_widget' => '<div id="%1$s" class="widget %2$s left half">',             
'after_widget' => '</div>',            
 'before_title' => '<h3 class="widgettitle">',             
'after_title' => '</h3>',          
));     
 } 
 }  	
add_action("admin_init", "sidebar_init");  	
add_action('save_post', 'save_sidebar_link');  	

function sidebar_init(){  		
add_meta_box("sidebar_meta", "Sidebar Selection", "sidebar_link", "page", "side", "default");  	
}  	
function sidebar_link(){  		
global $post, $dynamic_widget_areas;  		
$custom  = get_post_custom($post->ID);  		
$link    = $custom["_sidebar"][0];  	
?>  
<div class="link_header">  	
<?  	echo '<select name="link" class="sidebar-selection">';  	
echo '<option>Select Sidebar</option>';  	
echo '<option>-----------------------</option>';  	
foreach ( $dynamic_widget_areas as $list ){  		    
if($link == $list){  		      
echo '<option value="'.$list.'" selected="true">'.$list.'</option>';  			
}else{  		      
echo '<option value="'.$list.'">'.$list.'</option>';  			
}  		
}  	
echo '</select><br />';  	?>  
</div>  
<p>Select sidebar to use on this page.</p> 
 <?php  }  
function save_sidebar_link(){  global $post;  
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {return $post->ID;}  	
update_post_meta($post->ID, "_sidebar", $_POST["link"]);  
}  
add_action('admin_head', 'sidebar_css'); 
function sidebar_css() 
{  	echo'  	
<style type="text/css">  		
  .sidebar-selection{width:100%;}  	
</style>  	';  
}

3. Remove the screen options tab with screen_options hook

function remove_screen_options(){      
return false;  
}  
add_filter('screen_options_show_screen', 'remove_screen_options');

4. Display related posts by posts current author

function get_related_author_posts() {      
global $authordata, $post;      
$authors_posts = get_posts( array( 'author' => $authordata->ID, 'post__not_in' => array( $post->ID ), 'posts_per_page' => 5 ) );      
$output = '<ul>';      
foreach ( $authors_posts as $authors_post ) {          
$output .= '<li><a target="_blank" rel="nofollow"  href="' . get_permalink( $authors_post->ID ) . '">' . apply_filters( 'the_title', $authors_post->post_title, $authors_post->ID ) . '</a></li>';      }      
$output .= '</ul>';      
return $output;  }

5. Automatically add the Google +1 button

add_filter('the_content', 'google_plusone');  
function google_plusone($content) {  	
$content = $content.'<div class="plusone">
<g:plusone size="tall"target="_blank" rel="nofollow"  href="'.get_permalink().'"></g:plusone></div>';  	
return $content;  
}  
add_action ('wp_enqueue_scripts','google_plusone_script');  function google_plusone_script() {  	
wp_enqueue_script('google-plusone', 'https://apis.google.com/js/plusone.js', array(), null);  
}

6. Adjust settings on theme activation

add_action( 'after_setup_theme', 'the_theme_setup' );  
function the_theme_setup()  {  	
// First we check to see if our default theme settings have been applied.  	
$the_theme_status = get_option( 'theme_setup_status' );  	
// If the theme has not yet been used we want to run our default settings.  	
if ( $the_theme_status !== '1' ) {  		
// Setup Default WordPress settings  		
$core_settings = array(  			
'avatar_default'				=> 'mystery',					
// Comment Avatars should be using mystery by default  			
'avatar_rating'					=> 'G',							
// Avatar rating  			
'comment_max_links'				=> 0,							
// We do not allow links from comments  			
'comments_per_page'				=> 20							
// Default to 20 comments per page  		
);  		
foreach ( $core_settings as $k => $v ) {  			
update_option( $k, $v );  		
}  		
// Delete dummy post, page and comment.  		
wp_delete_post( 1, true );  		
wp_delete_post( 2, true );  		
wp_delete_comment( 1 );  		  		
update_option( 'theme_setup_status', '1' );  		
$msg = '  		<div class="error">  			
<p>The ' . get_option( 'current_theme' ) . 'theme has changed your WordPress default <a target="_blank" rel="nofollow"  href="' . admin_url() . 'options-general.php" title="See Settings">settings</a> and deleted default posts & comments.</p>  		
</div>';  		
add_action( 'admin_notices', $c = create_function( '', 'echo "' . addcslashes( $msg, '"' ) . '";' ) 
);  	
}  	elseif ( $the_theme_status === '1' and isset( $_GET['activated'] ) ) {  		
$msg = '  		<div class="updated">  			<p>The ' . get_option( 'current_theme' ) . ' theme was successfully re-activated.</p>  		
</div>';  		
add_action( 'admin_notices', $c = create_function( '', 'echo "' . addcslashes( $msg, '"' ) . '";' ) 
);  	
}  
}

7. Count total number of images in media library

function img_count(){  	
$query_img_args = array(  		
'post_type' => 'attachment',  		
'post_mime_type' =>array(                  		
'jpg|jpeg|jpe' => 'image/jpeg',                  		
'gif' => 'image/gif',  				
'png' => 'image/png', 
),  		
'post_status' => 'inherit',  		
'posts_per_page' => -1,  		
);  	
$query_img = new WP_Query( $query_img_args );  	
echo $query_img->post_count;  }

8. Display top 8 authors in wp_nav_menu using wp_list_authors

function wps_nav_authors($items, $args){      
if( $args->theme_location == 'header-navigation' )          
return $items . '<li><a target="_blank" rel="nofollow"  href="#">Authors</a><ul class="sub-menu"><li>' . wp_list_authors('show_fullname=1&optioncount=0&orderby=post_count&order=DESC&number=8&echo=0') . '</li></ul></li>';  
}  
add_filter('wp_nav_menu_items','wps_nav_authors', 10, 2);

9. Get feedburner count using get_transient and wp_remote_get

function feed_subscribers(){          
$feed_url = 'http://feeds.feedburner.com/yourname';          
$count = get_transient('feed_count');          
if ($count != false) return $count;  	
$count = 0;          
$data  = wp_remote_get('http://feedburner.google.com/api/awareness/1.0/GetFeedData?uri='.$feed_url.'');
if (is_wp_error($data)) {          
return 'error';     }else{  	
$body = wp_remote_retrieve_body($data);  	
$xml = new SimpleXMLElement($body);  	
$status = $xml->attributes();  	
if ($status == 'ok') {  		
$count = $xml->feed->entry->attributes()->circulation;  	
} else {  		
$count = 300; // fallback number  	}     
}  	
set_transient('feed_count', $count, 60*60*24); // 24 hour cache  	
echo $count; 
}

10. Changing the HTML editor font in wp 3.2

add_action( 'admin_head-post.php', 'devpress_fix_html_editor_font' );  
add_action( 'admin_head-post-new.php', 'devpress_fix_html_editor_font' );  
function devpress_fix_html_editor_font() { ?>  
<style type="text/css">#editorcontainer #content, #wp_mce_fullscreen { font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; }</style>  
<?php } ?>

11. Restrict wp-admin access to subscribers

function restrict_access_admin_panel(){  	
global $current_user;  	
get_currentuserinfo();  	
if ($current_user->user_level <  4) {  		
wp_redirect( get_bloginfo('url') );  		
exit;  	}  
}  
add_action('admin_init', 'restrict_access_admin_panel', 1);

12. Add rel=”lightbox” to all images embedded in a post

add_filter('the_content', 'my_addlightboxrel');  function my_addlightboxrel($content) {         
global $post;         
$pattern ="/<a(.*?)href=('|\")(.*?).(bmp|gif|jpeg|jpg|png)('|\")(.*?)>/i";         
$replacement = '<a$1href=$2$3.$4$5 rel="lightbox" title="'.$post->post_title.'"$6>';         
$content = preg_replace($pattern, $replacement, $content);         
return $content; 
 }

13. Change default “Enter title here” text within post title input field

function title_text_input( $title ){       
return $title = 'Enter new title';  
}  
add_filter( 'enter_title_here', 'title_text_input'
);

14. Redirect commenter to thank you post or page

add_filter('comment_post_redirect', 'redirect_after_comment');  
function redirect_after_comment(){       
wp_redirect('/thank-you-page/');        
exit();  
}

15. Create most recent posts dashboard widget

function wps_recent_posts_dw() {  ?>     <ol>       
<?php            
global $post;            
$args = array( 'numberposts' => 5 );            
$myposts = get_posts( $args );  		
foreach( $myposts as $post ) :  
setup_postdata($post); 
?>  		    
<li> (<? the_date('Y / n / d'); ?>) <a target="_blank" rel="nofollow"  href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>  	  
<?php endforeach; ?>     </ol>  
<?php  }  
function add_wps_recent_posts_dw() {         
wp_add_dashboard_widget( 'wps_recent_posts_dw', __( 'Recent Posts' ), 'wps_recent_posts_dw' );  }  
add_action('wp_dashboard_setup', 'add_wps_recent_posts_dw' );

16. Display hidden custom field _values

add_action( 'admin_head', 'showhiddencustomfields' );  
function showhiddencustomfields() {  	
echo "<style type='text/css'>#postcustom .hidden { display: table-row; }</style>\n";  
}

17. Loading jQuery from the Google CDN with wp_register_script

add_action( 'init', 'jquery_register' );  
function jquery_register() {  if ( !is_admin() ) {      
wp_deregister_script( 'jquery' );      
wp_register_script( 'jquery', ( 'http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js' ), false, null, true );     
wp_enqueue_script( 'jquery' );     }  
}

 

 

 

 

 

 
by Janeth Kent Date: 22-08-2013 wordpress snippets codigo funciones desarrolladores diseñadores visitas : 11473  
 
Janeth Kent

Janeth Kent

Licenciada en Bellas Artes y programadora por pasión. Cuando tengo un rato retoco fotos, edito vídeos y diseño cosas. El resto del tiempo escribo en MA-NO WEB DESIGN AND DEVELOPMENT.

 
 
 

Artículos relacionados

Una vulnerabilidad de alta gravedad en 3 plugins de WordPress afecta a 84.000 sitios web

Los investigadores han revelado un fallo de seguridad que afecta a tres plugins diferentes de WordPress y que afecta a más de 84.000 sitios web y que podría ser aprovechado…

Javascript: los operadores Spread y Rest

En el artículo de hoy vamos a hablar de una de las características de la versión ES6 (ECMAScript 2015) de JavaScript que es el operador Spreadasí como el operador Rest. Estas…

Introducción a RegExp - Expresiones regulares

Hoy vamos a escribir sobre las Expresiones Regulares conocidas como regex o regexp abreviado, un concepto muy útil de uso de patrones de búsqueda. Seguramente usted estaba en una situación en…

Desbloquear las funciones ocultas del móvil con estos códigos secretos

Los datos de servicio suplementario no estructurado (USSD), a veces conocidos como "códigos rápidos", son un protocolo extra-UI, que permite a las personas acceder a características ocultas. Este protocolo fue…

Gutenberg para WordPress, introducción al nuevo editor

Si utilizas WordPress como motor de la web de tu negocio, habrás podido darte cuenta de que el editor de entradas y páginas lleva muchísimo tiempo sin hacer ningún cambio,…

Como lograr instalar certificados SSL gratis en Wordpress con Cloudflare

Este artículo es parte de una serie de artículos sobre la optimización de Wordpress con Cloudflare y algunos tipos de servidores, se aconseja leer estos artículos antes: Speed up your site…

Fallo en WordPress, ahora es pánico: 1,5 millones de sitios afectados

No hay nada que hacer, a pesar de los esfuerzos conjuntos de los desarrolladores, servicios de alojamiento y operadores, los ataques a los sitios de WordPress están creciendo exponencialmente y…

Guia a la instalación de WordPress en Google Cloud

Gracias a Google Cloud es posible crear un hosting donde alojar una aplicación de wordpress, Google Cloud Platform es, básicamente, una plataforma que ha reunido todas las aplicaciones de desarrollo…

Gestor de contenidos a medida o wordpress; ¿Qué debemos eligir?

Este articulo nace de la exigencia de aclarar a nuestros usuarios y clientes las diferencias que hay entre un sistema de gestión de contenidos personalizado y una instalación wordpress a…

Wordpress pasa a Node.js con Calypso

Hoy el popular sitio de blogs WordPress.com dio a conocer una nueva interfaz de administración actual de la gestión de blogs, publicación de contenido, y lectura de sitios de otras…

PHP 7: Las novedades y como afecta a Wordpress

PHP 7, la actualización mas importante y mas deseada para el languaje de desarrollo web lado servidor PHP, está a la vuelta de la esquina. De acuerdo con el calendario…

Los mejores plugins para WordPress del 2013

Así que aquí encontraréis una lista de 86 plugins que consideramos muy recomendables por su utilidad, su calidad y el resultado que nos dan en la práctica. 1. ALL AROUND WORDPRESS CONTENT SLIDER CAROUSEL Descarga content slider carousel → 2. FRONTEND BUILDER WORDPRESS…

Clicky