it-swarm-es.com

La mejor colección de código para su archivo functions.php

Por favor, vote sobre la pregunta y cualquier respuesta que encuentre útil haciendo clic en la flecha ARRIBA en el lado izquierdo de la pregunta o respuesta.

Al igual que con muchos otros que ahora están viendo esta publicación, he estado leyendo varios blogs, foros y grupos de discusión para aprender y mejorar mis habilidades de wordpress. En los últimos 12 meses he estado en una misión para sustituir mi uso de complementos al agregar código a mi archivo functions.php en su lugar. Si bien estoy completamente de acuerdo en que los complementos son muy útiles en muchas situaciones, mi experiencia demostró que en el 90% de los casos de uso, aunque podría existir un complemento, su utilización podría crear complicaciones innecesarias y problemas de compatibilidad. Además, en muchos casos, dichos complementos añaden menús y otros elementos de administración que no quiero ni necesito.

La mayoría de las veces he encontrado que al analizar el código de los complementos pude eliminar el fragmento de código que quería y lo codifiqué en mi functions.php. Esto me proporcionó la funcionalidad exacta que necesitaba sin tener que incluir elementos innecesarios.

Por lo tanto, el propósito de esta publicación es mi intento de involucrarlo a usted, el lector/administrador/desarrollador, para compartir conmigo y otros aquí los bits de código que encuentre útiles y que haya agregado al archivo function.php de su tema para extender o mejorar WordPress sin utilizar un plugin.

Cuando envíe una respuesta aquí, proporcione un título a cada bit del código, háganos saber si con qué versión de wordpress sabe que es compatible, incluya la descripción que crea que mejor describe su función e (si corresponde) incluya un enlace al original Plugin o fuente donde encontraste la información.

Espero todas sus respuestas y, por supuesto, continuamente agregaré mis propios hallazgos cada vez que los encuentre.

327
NetConstructor.com

Eliminar elemento de menú de enlaces

Muchas de mis instalaciones de WordPress no requieren que los usuarios tengan acceso al elemento de menú 'Enlaces'. Esta función lo elimina de la vista.

add_action( 'admin_menu', 'custom_admin_menu' );
function custom_admin_menu() 
{
    global $menu;
    // var_dump($menu); // use this to identify the key for the menu item you want to remove
    unset( $menu[15] ); //key 15 is links
    if ( !current_user_can('manage_options') ) { unset( $menu[75] ); } //key 75 is tools ... but only for non super admins
}
1
Philip Downer

Desactivar el mensaje Actualizar ahora para no administradores

En realidad soy un gran fan de NO usar este código. En su lugar, prefiero permitir que los clientes actualicen sus propias instalaciones de WordPress. Esto ayuda a mantener el sitio actualizado y me obliga a escribir mejor código.

if ( !current_user_can( 'manage_options' ) ) {
  add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 );
  add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) );
}
1
Philip Downer

Añadir tipos de publicación personalizados a la página de archivos

function namespace_add_custom_types( $query ) {
if( is_category() || is_tag() && empty( $query->query_vars['suppress_filters'] ) ) {
$query->set( 'post_type', array(
 'post', 'your-custom-post-type-here'
            ));
      return $query;
    }
}
add_filter( 'pre_get_posts', 'namespace_add_custom_types' );
1
NetConstructor.com

Logos personalizados para la página de inicio de sesión y Admin

/*-----------------------------------------------------------------------------------*/
/*  Custom logos
/*-----------------------------------------------------------------------------------*/
function custom_admin_logo() {
    echo '
        <style type="text/css">
            #header-logo { background-image: url('.get_bloginfo('template_directory').'/path/to/images/admin-logo.png) !important; }
        </style>
    ';
}
add_action('admin_head', 'custom_admin_logo');

function custom_login_logo() {
    echo '<style type="text/css">
        h1 a { background-image:url('.get_bloginfo('template_directory').'/path/to/images/login-logo.png) !important; }
    </style>';
}

add_action('login_head', 'custom_login_logo');
1
Daniel Sachs

Cambiar el nombre del menú "Publicaciones" en admin a lo que desee (por ejemplo, "Artículos")

// hook the translation filters
add_filter('gettext','change_post_to_article');
add_filter('ngettext','change_post_to_article');

function change_post_to_article( $translated ) {
$translated = str_ireplace('Post','Article',$translated );// ireplace is PHP5 only
return $translated;
}

Créditos a smashingmagazine.com

1
dani

Agregar una clase personalizada a los enlaces siguientes y anteriores

add_filter('next_posts_link_attributes', 'posts_link_attributes');
add_filter('previous_posts_link_attributes', 'posts_link_attributes');
function posts_link_attributes(){
    return 'class="styled-button"';
    }
1

Agregar automáticamente un campo personalizado oculto y asociar valor a una publicación cuando se publica la publicación

add_action('publish_page', 'add_custom_field_automatically');
add_action('publish_post', 'add_custom_field_automatically');
function add_custom_field_automatically($post_ID) {
global $wpdb;
if(!wp_is_post_revision($post_ID)) {
    add_post_meta($post_ID, 'field-name', 'custom value', true);
}
}
1

Agregar un enlace de inicio de sesión a wp_nav_men

//ADD LOGIN LINK TO MENU
add_filter('wp_nav_menu_items', 'add_login_logout_link', 10, 2);

function add_login_logout_link($items, $args) { 

        $loginoutlink = wp_loginout('index.php', false); 

        $items .= '<li>'. $loginoutlink .'</li>'; 

    return $items; 
}
1
Rev. Voodoo

Llame a bloginfo usando un código corto.

function digwp_bloginfo_shortcode($atts) {

    extract(shortcode_atts(array(
            'key' => '',
            ), $atts));

    return get_bloginfo($key);
}

add_shortcode('bloginfo', 'digwp_bloginfo_shortcode');

Uso:

[bloginfo key='name']
0
jackreichert