WordPress es un gestor de contenidos muy flexible que prácticamente permite hacer cualquier cosa. Y entre ellas está la posibilidad de aplicar algunas funciones para retocar el sistema. Si alguna de estas te es útil, crea un plugin o añádelo a tu fichero de funciones.
Añadir tu propio CSS en wp_nav_menu
:
function custom_nav_class($classes, $item) { $classes[] = "custom-class"; return $classes; } add_filter('nav_menu_css_class' , 'custom_nav_class' , 10 , 2);
Eliminar la versión de WordPress del RSS/Atom:
function remove_feed_generator() { return ''; } add_filter('the_generator', 'remove_feed_generator');
Añadir un campo para Twitter y Facebook en la ficha del usuario, y mostrarlo en el listado de usuarios:
function add_contactmethods($contactmethods) { $contactmethods['twitter'] = 'twitter'; $contactmethods['facebook'] = 'facebook'; return $contactmethods; } add_filter('user_contactmethods','add_contactmethods',10,1); function profile_links($actions, $user_object) { $actions['website'] = '<a href="'.$user_object->user_url.'">web</a>'; $actions['facebook'] = '<a href="'.$user_object->facebook.'">fb</a>'; $actions['twitter'] = '<a href="'.$user_object->twitter.'">tw</a>'; return $actions; } add_filter('user_row_actions', 'profile_links', 10, 2);
Cambiar el color de las entradas en el panel de administración) según su estado:
function posts_status_color() { ?> <style> .status-draft { background: #FCE3F2 !important; } .status-pending { background: #87C5D6 !important; } .status-publish { /* por defecto */ } .status-future { background: #C6EBF5 !important; } .status-private { background: #F2D46F; } </style> <?php } add_action('admin_footer','posts_status_color');
Enviar al resultado cuando sólo hay uno en una búsqueda:
function single_result() { if(is_search()) { global $wp_query; if($wp_query->post_count == 1) { wp_redirect(get_permalink($wp_query->posts['0']->ID )); } } } add_action('template_redirect', 'single_result');
Añadir ancho y alto en el listado de contenidos multimedia:
function tamany_column($cols) { $cols["dimensions"] = "Dim (Wid × Hei)"; return $cols; } function tamany_value($column_name, $id) { $meta = wp_get_attachment_metadata($id); if(isset($meta['width'])) echo $meta['width'].' × '.$meta['height']; } add_filter('manage_media_columns', 'tamany_column'); add_action('manage_media_custom_column', 'tamany_value', 10, 2);
Limitar la subida de ficheros a GIF, JPG y PNG:
function restrict_mime($mimes) { $mimes = array( 'gif' => 'image/gif', 'jpg|jpeg|jpe' => 'image/jpeg', 'png' => 'image/png' ); return $mimes; } add_filter('upload_mimes', 'restrict_mime');
Habilitar Tinymce HTML sólo para algunos usuarios:
function disable_html_editor_wps() { global $current_user; get_currentuserinfo(); $users = array("admin", "juan", "maria"); if(!in_array($current_user->user_login, $users)) { echo ''; } } add_filter('wp_default_editor', create_function('', 'return "tinymce";')); add_action('admin_head', 'disable_html_editor_wps');
Crea un meta-description con el texto del contenido:
function create_meta_description() {
global $post;
if(!is_single()) { return; }
$meta = strip_tags($post->post_content);
$meta = strip_shortcodes($post->post_content);
$meta = str_replace(array("\n", "\r", "\t"), ' ', $meta);
$meta = substr($meta, 0, 160);
echo '<meta name="description" content="'.$meta.'">';
}
add_action('wp_head', 'create_meta_description');
Cambia la cantidad de elementos por página en el panel de administración:
function admin_pagination() { global $wp_query; $per_page = 50; $wp_query->query('showposts='.$per_page); } add_action('admin_head', 'admin_pagination');
Eliminar palabras de menos de 3 letras en la URL al crearse:
function remove_short_words($slug) { if (!is_admin()) return $slug; $slug = explode('-', $slug); foreach ($slug as $k => $word) { if (strlen($word) < 3) { unset($slug[$k]); } } return implode('-', $slug); } add_filter('sanitize_title', 'remove_short_words');
Mostrar un bloque con la URL corta de cada entrada en su panel:
function shortlink_add_column($cols) { $cols['shortlink'] = 'Enlace Corto'; return $cols; } function shortlink_add_value($column_name, $post_id) { if ('shortlink' == $column_name) { echo '<input type="text" value="'.wp_get_shortlink($post_id).'" onclick="this.focus(); this.select();">'; } } function shortlink_sortable_column($columns) { $columns['shortlink'] = 'Enlace Corto'; return $columns; } add_filter('manage_edit-post_sortable_columns', 'shortlink_sortable_column'); add_filter('manage_posts_columns', 'shortlink_add_column'); add_action('manage_posts_custom_column', 'shortlink_add_value', 10, 2);
Los usuarios (no admin) sólo pueden ver su librería multimedia:
function my_files_only($wp_query) { if(strpos($_SERVER['REQUEST_URI'], '/wp-admin/upload.php') !== false) { if(!current_user_can('level_5')) { global $current_user; $wp_query->set('author', $current_user->id); } } } add_filter('parse_query', 'my_files_only');
Los usuarios (no admin) sólo pueden ver sus entradas:
function posts_for_current_author($query) { global $pagenow; if('edit.php' != $pagenow || !$query->is_admin) return $query; if(!current_user_can('manage_options')) { global $user_ID; $query->set('author', $user_ID); } return $query; } add_filter('pre_get_posts', 'posts_for_current_author');
Ver más botones en el Tinymce HTML:
function fb_change_mce_options($initArray) { $ext = 'pre[id|name|class|style],iframe[align|longdesc|name|width|height|frameborder|scrolling|marginheight|marginwidth|src]'; if(isset($initArray['extended_valid_elements'])) { $initArray['extended_valid_elements'] .= ','.$ext; } else { $initArray['extended_valid_elements'] = $ext; } return $initArray; } add_filter('tiny_mce_before_init', 'fb_change_mce_options');
Deja una respuesta