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

9 sept 2010, 11:29:00
Vistas: 169K
Votos: 346

Al igual que 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 en WordPress. Durante los últimos 12 meses, me he propuesto sustituir el uso de plugins añadiendo código a mi archivo functions.php.

Si bien estoy completamente de acuerdo en que los plugins son muy útiles en muchas situaciones, mi experiencia demostró que en el 90% de los casos, aunque existe un plugin, utilizarlo podría crear complicaciones innecesarias y problemas de compatibilidad. Además, en muchos casos, estos plugins añadían menús y otros elementos administrativos que no quiero ni necesito.

En la mayoría de los casos, he descubierto que al analizar el código de los plugins, pude extraer el fragmento de código que quería e implementarlo directamente en mi functions.php. Esto me proporcionó exactamente la funcionalidad que necesitaba sin tener que incluir elementos innecesarios.

Así que el propósito de esta publicación es mi intento de involucrarte a ti, el lector/administrador/desarrollador, a compartir conmigo y con otros aquí cualquier fragmento de código que encuentres útil y hayas añadido al archivo functions.php de tu tema para extender o mejorar WordPress sin utilizar un plugin.

Cuando envíes una respuesta aquí, por favor, dale un título a cada fragmento de código, háznoslo saber con qué versión de WordPress sabes que es compatible, incluye cualquier descripción que consideres que mejor describe su función y (si corresponde) incluye un enlace al plugin original o la fuente donde encontraste la información.

Espero con interés todas vuestras respuestas y, por supuesto, continuaré añadiendo mis propios descubrimientos cuando los encuentre.

Por favor, vota la pregunta y cualquier respuesta que encuentres útil haciendo clic en la flecha hacia arriba en el lado izquierdo de la pregunta o respuesta.

25
Comentarios

Por favor, añade también tus hallazgos antiguos y existentes.

hakre hakre
9 sept 2010 11:38:16

Hola @NetConstructor: Me preocupa esta pregunta porque es una pregunta de "Lista de X" sobre la que la gente de StackExchange nos ha advertido: http://meta.stackexchange.com/questions/57226/should-we-have-a-list-of-x-close-reason Mi mayor preocupación es que cuando pienso en tu pregunta, puedo imaginar un número casi infinito de respuestas y, como tal, me preocupa que esta pregunta resulte en una colección de respuestas aleatorias pero nada definitivo. Quiero obtener las opiniones de otros antes de (votar para) cerrarla, ya que no quiero ser demasiado estricto, solo tengo dudas.

MikeSchinkel MikeSchinkel
9 sept 2010 14:00:40

Mi voto es cerrarla o convertirla en wiki comunitaria

Chris_O Chris_O
9 sept 2010 15:37:41

Considerando que las primeras 5 respuestas fueron del autor de la pregunta y que la pregunta parece estar más orientada a recopilar un conjunto de respuestas en lugar de una única respuesta definitiva, esto debería ser un wiki comunitario.

EAMann EAMann
9 sept 2010 17:43:16

Parece que no se puede simplemente modificar una pregunta para convertirla en wiki. ¿Es esto correcto?

NetConstructor.com NetConstructor.com
9 sept 2010 18:31:53

Sin embargo, esto es útil (he encontrado 2 fragmentos de código que usaré mucho). Si va a ser un wiki comunitario y hay que empezar desde cero para hacerlo, ¿quizás podríamos simplemente trasladar el contenido de aquí allí?

Lemon Bacon Lemon Bacon
10 sept 2010 02:58:46

@NetConstructor.com ... Convertí la pregunta en un wiki cuando escribí mi último comentario. Perdón si eso causó alguna confusión. Normalmente, tú (como el autor original) puedes convertir una pregunta en wiki en cualquier momento.

EAMann EAMann
10 sept 2010 03:56:15

@EAMann gracias... Estaba buscando esa opción pero no estaba seguro de dónde estaba ubicada. ¿Tal vez después de que la convertiste ya no pude ver la opción?

NetConstructor.com NetConstructor.com
10 sept 2010 08:37:41

@NetConstructor.com - Exacto. Una vez que se convierte, ya está convertida... la opción se establece y desaparece de la página.

EAMann EAMann
10 sept 2010 17:23:26

Considero que esto es un mal estilo y prefiero los plugins. a) Están construidos por desarrolladores dedicados b) se mantienen y actualizan fácilmente. Para pequeños fragmentos de código personalizados, recomiendo el plugin Shortcode Exec PHP que ofrece una forma muy limpia y portable de personalizar tu Wordpress.

Raphael Raphael
10 nov 2010 11:43:21

Aunque interesante, creo que la mayoría estaría de acuerdo en que cuando desarrollas temas, prefieres tener las cosas localizadas dentro de un archivo functions.php

NetConstructor.com NetConstructor.com
24 nov 2010 19:01:50

@NetConstructor - Si vas a editar las entradas de otros, por favor ten cuidado al hacerlo, arruinaste la indentación en mi publicación. Siempre me esfuerzo por mantener la indentación para mejor legibilidad. También agradecería que te tomaras el tiempo de explicar las ediciones que haces (no pude ver ninguna razón para que editaras mi entrada - y no hubo un resumen de la edición).

t31os t31os
28 ene 2011 18:53:26

@t31os -- Lo edité para mantenerlo consistente con todas las entradas

NetConstructor.com NetConstructor.com
7 feb 2011 15:53:20

Todas las respuestas no relacionadas con un tema deberían ser eliminadas. Este hilo es un buen ejemplo de malas prácticas de codificación.

fuxia fuxia
13 jun 2011 15:09:56

Tendría que discrepar. La pregunta no estaba relacionada con el tema. Todas las modificaciones de functions.PHP aplicables son bienvenidas y los usuarios deberían votar arriba/abajo en consecuencia.

NetConstructor.com NetConstructor.com
14 jun 2011 07:56:23

Es interesante que no se mencione en ningún lugar que el archivo functions.php es el que está en el directorio de tu tema, lo que lleva a confusión, como esta: http://wordpress.stackexchange.com/questions/25341/error-after-editing-functions-php

scribu scribu
9 ago 2011 03:07:10

Creo que sería mejor animar a la gente a crear un plugin de funcionalidad personalizado en lugar de usar el functions.php de su tema

Ian Dunn Ian Dunn
16 ene 2012 20:49:10

@rarst - Con respecto a tu comentario sobre cerrar este hilo, ¿no es esta la razón por la que está listado en la wiki de la comunidad?

User User
19 feb 2012 15:35:19

@Cor van Noorloos el uso del estatus de wiki comunitaria se ha reducido considerablemente y es desalentado por la red. En pocas palabras, la excusa de "no es realmente adecuado para preguntas y respuestas, pero es una wiki comunitaria" ya no es válida. Las respuestas aquí se convirtieron en un desorden mal mantenido, solo visitado por el factor diversión/curiosidad. Ha habido mucho movimiento en toda la red para eliminar preguntas como esta.

Rarst Rarst
19 feb 2012 15:43:03

@rarst - Entendible. Punto tomado.

User User
19 feb 2012 15:55:04

En relación al cierre de esta "wiki" específica, voto porque se reabra. Obviamente esta publicación wiki es muy popular, como lo demuestra el hecho de que tiene 30,000 visitas, que es tres veces más que CUALQUIER otra pregunta o wiki en este sitio, y el tema en sí ha recibido 119 votos positivos, el doble que cualquier otra pregunta o tema. Si estás de acuerdo con su valor, por favor vota para reabrirlo haciendo clic en el enlace "reopen".

NetConstructor.com NetConstructor.com
20 feb 2012 13:12:40

@NetConstructor.com El número puro de visitas a la página no es un indicador de calidad. Deberíamos fomentar preguntas específicas con respuestas específicas y buenas prácticas de codificación. Este hilo es lo opuesto.

fuxia fuxia
22 feb 2012 04:44:30

@toscho - Esa es precisamente la razón por la que esto se configuró como un wiki y, por lo tanto, esta publicación es perfectamente válida. El punto que mencioné respecto a las visitas se mencionó porque este tema obviamente es 3 veces más popular que cualquier otro en este sitio. Este sitio web es popular específicamente debido a preguntas como estas y, por lo tanto, no tiene sentido cerrarlo. No creo que se pueda debatir esto a menos que el interés de la comunidad en temas como estos no tenga valor para los administradores.

NetConstructor.com NetConstructor.com
24 feb 2012 18:38:34

Agregaré un comentario más aquí basado en unos cálculos que acabo de hacer. Hay menos de 790 usuarios registrados en este sitio web con una calificación de "1" o más. Asumiendo que este grupo de individuos representa a aquellos que realmente votan y/o contribuyen en este sitio (y siendo 790 increíblemente justo), entonces 117 personas que votaron positivamente esta pregunta representan más del 14% de todos los usuarios activos que encontraron este tema útil. Voten para reabrir el tema, por favor.

NetConstructor.com NetConstructor.com
24 feb 2012 18:47:01

@NetConstructor.com Discútelo en Meta donde la gente podrá ver mejor tus argumentos. :)

fuxia fuxia
24 feb 2012 19:10:14
Mostrar los 20 comentarios restantes
Todas las respuestas a la pregunta 18
0

Añadir automáticamente imágenes de cabecera desde una ubicación de directorio

Dentro del tema predeterminado que viene con WordPress, notarás un menú de tema adicional que se activa y te permite seleccionar una imagen de cabecera para usar. En el código del tema predeterminado, estas imágenes están codificadas directamente en el archivo functions.php. El código a continuación permite que WordPress detecte automáticamente nuevas imágenes basadas en un directorio específico de imágenes de cabecera que puedes crear en tu servidor (o dentro de la carpeta de tu tema).

Incluirá automáticamente cualquier archivo .jpg o .jpeg. Cada imagen debe tener un archivo de miniatura asociado, pero puede ser simplemente una copia del original con un nombre diferente que debe terminar en "-thumbnail". El nombre asociado se usa como descripción en los ajustes de apariencia de cabeceras y los guiones bajos se reemplazan automáticamente con espacios. (Por ejemplo, Mi_Imagen_Cabecera_A.jpg, Mi_Imagen_Cabecera_A-thumbnail.jpg tendrá una descripción que se mostrará automáticamente como "Mi Imagen Cabecera A").

if ($handle = opendir( TEMPLATEPATH . '/images/headers/') ) {
    $headers = array();
    while (false !== ($file = readdir($handle))) {
        $pos = strrpos( $file, '.' );
        if( $pos !== false && $pos > 0 ) {
            $file_name = substr( $file, 0, $pos );
            if( strpos( $file_name, "-thumbnail" ) === false ) {
                $file_ext = substr( $file, $pos+1 );
                $file_ext_low = strtolower( $file_ext );
                if( $file_ext_low == "jpg" || $file_ext_low == "jpeg" ) {
                    $headers[$file_name] = array (
                    'url' => '%s/images/headers/' . $file,
                    'thumbnail_url' => '%s/images/headers/' . $file_name ."-thumbnail." . $file_ext,
                    'description' => __( str_replace( "_", " ", $file_name ), 'twentyten' )
                    );
                }
            }
        }
    }
closedir($handle);
register_default_headers( $headers );
}
17 nov 2010 13:14:14
2

Mostrando información para usuarios registrados

if ( is_user_logged_in() ) {

}

no funciona en el archivo functions.php. Puedes usar este código:

if ( !function_exists('is_user_logged_in') ) :

 function is_user_logged_in() {
$user = wp_get_current_user();

if ( $user->id == 0 ){
// Esta sección si el usuario no está registrado
} else {
// Esta sección si el usuario está registrado
}
}
endif;
3 dic 2010 08:44:36
Comentarios

if( !current_user_can('read') debería captar a los invitados (es decir, usuarios no identificados) ..

t31os t31os
7 dic 2010 12:19:22

Acabo de probarlo y is_user_logged_in() parece funcionar bien en functions.php?.. ¿Alguna información de fondo sobre por qué se supone que no debería?

Rarst Rarst
26 ene 2011 15:48:01
1

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

/*-----------------------------------------------------------------------------------*/
/*  Logos personalizados
/*-----------------------------------------------------------------------------------*/
function custom_admin_logo() {
    echo '
        <style type="text/css">
            #header-logo { background-image: url('.get_bloginfo('template_directory').'/ruta/a/imagenes/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').'/ruta/a/imagenes/login-logo.png) !important; }
    </style>';
}

add_action('login_head', 'custom_login_logo');
13 jun 2011 14:05:39
Comentarios

Por favor, revisa este gist. Hay opciones aún mejores que las mostradas en el gist. También podrías intentar participar en el ticket de trac (enlace en el encabezado del plugin del gist).

kaiser kaiser
13 jun 2011 17:01:56
5

Eliminar al Administrador (Usuario #1) de la lista de usuarios

function your_pre_user_query($user_search) {
  $user = wp_get_current_user();
  if ($user->ID!=1) { // Si el usuario actual no es el ID 1
    global $wpdb;
    $user_search->query_where = str_replace('WHERE 1=1',
      "WHERE 1=1 AND {$wpdb->users}.ID<>1",$user_search->query_where); // Excluir al usuario con ID 1
  }
}
add_action('pre_user_query','your_pre_user_query'); // Añadir acción al hook pre_user_query
13 jun 2011 14:11:33
Comentarios

Nuevamente: el usuario 1 puede no ser un administrador. Consulta Roles y Capacidades.

fuxia fuxia
13 jun 2011 14:59:29

Es un ejemplo. Además, en instalaciones predeterminadas el usuario 1 es Admin - el primer usuario creado. Por eso hice énfasis en (Usuario #1)

Daniel Sachs Daniel Sachs
13 jun 2011 15:05:06

Es un ejemplo que muestra cómo no verificar capacidades administrativas. No deberías usar este código en un sitio web real.

fuxia fuxia
13 jun 2011 15:08:17

Exactamente. Este código no verifica capacidades, toscho, sino un usuario específico. Este código no tiene nada que ver con capacidades y no he mencionado capacidades en ningún momento. No veo por qué esto no podría usarse en sitios en producción.

Daniel Sachs Daniel Sachs
13 jun 2011 15:21:04

@Daniel Sachs Si estás buscando al primer administrador añadido, primero verifica los roles de todos los usuarios, luego ordénalos por su ID y toma el primero. Como dijo @toscho: Actualmente es un "ejemplo de cómo no deberías hacerlo". Razones: a) el administrador real podría no ser el que tiene el ID más bajo b) Si alguien más trabajara en esto, ella/él no buscaría esta funcionalidad en un tema.

kaiser kaiser
13 jun 2011 16:56:45
0

Obtener Atributos de una Miniatura Dada

Utiliza esta función dentro del bucle para determinar el ancho, alto y URL de una imagen en miniatura. Muy útil para asignar una imagen en miniatura como elemento de fondo mediante CSS en línea.

/**
* OBTENER ATRIBUTOS DE LA MINIATURA
*
* Recupera el ancho, alto y URI de una miniatura.
*
* @author Philip Downer <philip@manifestbozeman.com>
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version v1.0
*
* @param string $return Acepta 'path', 'width' o 'height'.
* @param string $size El tamaño de miniatura correspondiente a la función {@link add_image_size() del núcleo de WP}.
* @return mixed Devuelve la información solicitada, o si no hay 'Imagen Destacada' asignada, devuelve 'false'.
*/
function get_thumb_attr($return,$size='thumbnail') {
    global $post;

    if (has_post_thumbnail($post->ID)) {
      $thumb = wp_get_attachment_image_src(get_post_thumbnail_id(), 'intro');
      if ( $return == 'path' ) { return $thumb[0]; }
      if ( $return == 'width' ) { return $thumb[1]; }
      if ( $return == 'height' ) { return $thumb[2]; }
    } else {
        return false;
    }
}//end function
14 sept 2011 21:03:24
1

Mostrar el contenido de un widget fuera del contexto de una barra lateral utilizando su ID. El HTML envolvente antes/después no está incluido. Necesitas conocer el ID específico del widget que deseas (ej. 'text-5').

function widget_contents($id) {
    list($type,$number) = explode('-',$id);
    global $wp_registered_widgets;
    $wp_registered_widgets[$id]['callback'][0]->display_callback(array('widget_id'=>$id),$number);
}

Puedes revisar la salida de wp_get_sidebars_widgets() si no estás seguro del ID preciso que necesitas.

Un ejemplo más completo extraído de /wp-includes/widgets.php bajo la función dynamic_sidebar():

function render_widget($id) {
    global $wp_registered_widgets;
    $params = array_merge(
            array( array('widget_id' => $id, 'widget_name' => $wp_registered_widgets[$id]['name']) ),
            (array) $wp_registered_widgets[$id]['params']
    );
    $classname_ = '';
    foreach ( (array) $wp_registered_widgets[$id]['classname'] as $cn ) {
            if ( is_string($cn) )
                    $classname_ .= '_' . $cn;
            elseif ( is_object($cn) )
                    $classname_ .= '_' . get_class($cn);
    }
    $classname_ = ltrim($classname_, '_');
    $params[0]['before_widget'] = sprintf($params[0]['before_widget'], $id, $classname_);

    if ( is_callable($wp_registered_widgets[$id]['callback']) )
            call_user_func_array($wp_registered_widgets[$id]['callback'], $params);
}
17 nov 2011 19:14:37
Comentarios

Vaya. El método mucho más simple sería usar the_widget() http://codex.wordpress.org/Function_Reference/the_widget

dalethedeveloper dalethedeveloper
8 feb 2012 17:35:35
0

Emoticonos personalizados (plugin)

/**
 * Emoticonos.
 */
function filter_smilies_src($img_src, $img, $siteurl) {
    return plugins_url('', __FILE__) . '/img/smilies/' . $img;
}
add_filter('smilies_src', 'filter_smilies_src', 1, 10);

Emoticonos personalizados (tema)

/**
 * Emoticonos.
 */
function filter_smilies_src($img_src, $img, $siteurl) {
    return get_bloginfo('stylesheet_directory') . '/images/smilies/' . $img;
}
add_filter('smilies_src', 'filter_smilies_src', 1, 10);
4 dic 2011 22:45:35
0

Reposicionar el Editor WYSIWYG mediante JQUERY

Probado en: WordPress 3.0.1

Este código te permitirá eliminar cajas meta específicas que WordPress añade por defecto en las pantallas de ENTRADAS y PÁGINAS.

// REPOSICIONAR EL EDITOR WYSIWYG MEDIANTE JQUERY
   add_action('admin_head','admin_head_hook');
   function admin_head_hook() {
 ?><style type="text/css">
  #postdiv.postarea, #postdivrich.postarea { margin:0; }
  #post-status-info { line-height:1.4em; font-size:13px; }
  .custom-wysiwyg-editor-container { margin:2px 6px 6px 6px; }
  #ed_toolbar { display:none; }
  #postdiv #ed_toolbar, #postdivrich #ed_toolbar { display:block; }
 </style><?php
   }

   add_action('admin_footer','admin_footer_hook');
   function admin_footer_hook() {
 ?><script type="text/javascript">
  jQuery('#postdiv, #postdivrich').prependTo('.custom-wysiwyg-editor-container');
 </script><?php
   }
9 sept 2010 11:52:16
1

Cerrar automáticamente etiquetas faltantes en el editor WYSIWYG

Probado en: WordPress 3.0.1

Este código cerrará automáticamente cualquier etiqueta faltante al usar el editor WYSIWYG.

// LIMPIA AUTOMÁTICAMENTE EL HTML DEL EDITOR WYSIWYG CERRANDO ETIQUETAS FALTANTES
   function clean_bad_content($bPrint = false) {
 global $post;
 $szPostContent  = $post->post_content;
 $szRemoveFilter = array("~<p[^>]*>\s?</p>~", "~<a[^>]*>\s?</a>~", "~<font[^>]*>~", "~<\/font>~", "~style\=\"[^\"]*\"~", "~<span[^>]*>\s?</span>~");
 $szPostContent  = preg_replace($szRemoveFilter, '', $szPostContent);
 $szPostContent  = apply_filters('the_content', $szPostContent);
 if ($bPrint == false) return $szPostContent; 
 else echo $szPostContent;
   }
9 sept 2010 13:51:01
Comentarios

Solo para hacerte saber que existe una opción para hacer eso en el propio WordPress. Puede ser útil si necesitas forzarlo para múltiples usuarios independientemente de su configuración. Pero yo forzaría a guardar esa configuración en su lugar.

Ashfame Ashfame
20 abr 2011 20:11:18
0

Eliminar atributos role="search" para get_search_form()

// Función para eliminar el atributo role de los formularios de búsqueda
function remove_role_search($role)
{
    $result = array();
    // Busca todos los atributos role en el formulario
    preg_match_all('|role="[^"]*"|U', $role, $result);
    // Elimina cada atributo role encontrado
    foreach ($result[0] as $role_tag) {
        $role = str_replace($role_tag, '', $role);
    }
    return $role;
}
// Aplica el filtro al formulario de búsqueda de WordPress
add_filter('get_search_form', 'remove_role_search');
28 ene 2011 19:52:16
1

Añadir un enlace de inicio de sesión a wp_nav_menu

//AÑADIR ENLACE DE LOGIN AL MENÚ
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; 
}
23 feb 2011 17:32:36
Comentarios

No utilices el almacenamiento en búfer de salida. wp_loginout() tiene un segundo parámetro $echo para facilitarte la vida.

fuxia fuxia
23 feb 2011 21:30:34
0

Cambiar el nombre del menú "Posts" en el administrador por el que desees (por ejemplo, "Artículos")

// enganchar los filtros de traducción
add_filter('gettext','change_post_to_article');
add_filter('ngettext','change_post_to_article');

function change_post_to_article( $translated ) {
$translated = str_ireplace('Post','Artículo',$translated );// ireplace es solo para PHP5
return $translated;
}

Créditos a smashingmagazine.com

12 may 2011 16:40:29
1

Eliminar el Elemento de Menú "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); // usa esto para identificar la clave del elemento de menú que deseas eliminar
    unset( $menu[15] ); //la clave 15 corresponde a Enlaces
    if ( !current_user_can('manage_options') ) { unset( $menu[75] ); } //la clave 75 corresponde a Herramientas ... pero solo para usuarios que no son super administradores
}
14 sept 2011 20:06:05
Comentarios

A partir de WP 3.1, también puedes usar remove_submenu_page http://codex.wordpress.org/Function_Reference/remove_submenu_page

User User
13 feb 2012 21:33:05
0

Desactivar el mensaje "Actualizar ahora" para usuarios no administradores

En realidad, no soy muy partidario de usar este código. 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;" ) );
}
14 sept 2011 20:09:03
0

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

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);
}
}
4 dic 2011 14:04:44
1

Usar bloginfo mediante shortcode...

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']
28 dic 2010 10:36:30
Comentarios

¿Puedes agregar algunos ejemplos de dónde esto podría ser útil?

Peter Mortensen Peter Mortensen
1 feb 2020 21:05:40
0

Añadir una clase personalizada a los enlaces de siguiente y anterior

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"';
    }
4 dic 2011 14:02:24
0

Añadir tipos de entradas personalizadas 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', 'tu-tipo-de-entrada-personalizada-aqui'
            ));
      return $query;
    }
}
add_filter( 'pre_get_posts', 'namespace_add_custom_types' );
17 dic 2011 23:19:27