Programo Web http://programoweb.com Desarrollo Web y WordPress Sat, 07 Aug 2010 00:10:59 +0000 en hourly 1 http://wordpress.org/?v=3.0 Agregar categorías a las páginas en WordPress http://programoweb.com/agregar-categorias-paginas-wordpress.html http://programoweb.com/agregar-categorias-paginas-wordpress.html#comments Sat, 07 Aug 2010 00:10:59 +0000 JuanK http://programoweb.com/?p=1520 En mis intentos por hacer un diseño para WordPress me ví en la obligación de categorizar las páginas, pero no encontraba la forma de hacerlo sin tener que agregar algún plugin, pero pude hacerlo finalmente.

Para lograrlo debemos agregar este código al archivo functions.php:

// Agregar categorías en páginas
function add_category_box_on_page(){
add_meta_box('categorydiv', __('Categories'), 'post_categories_meta_box', 'page', 'side', 'low');
}

add_action('admin_menu', 'add_category_box_on_page');

Listo, ahora cuando edites una página encontrarás la caja de categorías para agregarlas, igual que al editar un post.

Vía: Assign Categories to Pages in WordPress

]]>
http://programoweb.com/agregar-categorias-paginas-wordpress.html/feed 11
Datos FTP al actualizar WordPress http://programoweb.com/datos-ftp-actualizar-wordpress.html http://programoweb.com/datos-ftp-actualizar-wordpress.html#comments Wed, 04 Aug 2010 19:35:53 +0000 JuanK http://programoweb.com/?p=1530 A mucha gente, me incluyo, le pasa que al querer actualizar la versión de WordPress o plugins automáticamente les pide los datos de FTP y aunque los ingresemos a veces no funciona, principalmente por un error nuestro. También pasa al querer instalar un plugin automáticamente.

Para arreglar este error debemos agregar unos datos al archivo config.php y nuestro problema estará resuelto:

define('FS_METHOD', 'ftpext');
// ruta absoluta al directorio de instalación
define('FTP_BASE', '/public_html/miblog.com/');
// ruta absoluta a la carpeta "wp-content"
define('FTP_CONTENT_DIR', '/public_html/miblog.com/wp-content/');
// ruta absoluta a la carpeta "plugins"
define('FTP_PLUGIN_DIR ', '/public_html/miblog.com/wp-content/plugins/');
// Nombre de usuario FTP
define('FTP_USER', 'usuario');
// Constraseña FTP
define('FTP_PASS', 'contraseña');
// Nombre página
define('FTP_HOST', 'miblog.com');

Sólo debemos agregar nuestros datos de FTP y subir el archivo nuevamente.

Ahora podrán actualizar fácilmente sus plugins y WP.

Vía: WPBeginner

]]>
http://programoweb.com/datos-ftp-actualizar-wordpress.html/feed 4
Feed con las últimas páginas de WordPress http://programoweb.com/feed-ultimas-paginas-wordpress.html http://programoweb.com/feed-ultimas-paginas-wordpress.html#comments Sun, 01 Aug 2010 04:58:37 +0000 JuanK http://programoweb.com/?p=1524 Ayer estuve buscando, desesperadamente casi, alguna forma de que se publiquen las últimas páginas estáticas creadas dentro de un feed, aunque no encontré ninguna forma de hacerlo, ni siquiera con plugin.

A causa de esto me acordé de un post que se publicó en Yoast.com, donde nos daban un código para crear un feed personalizable y se me ocurrió editarlo un poco.

Revisando un poco el Codex, la función query_posts, encontré una forma de publicar las últimas páginas en el feed, de esta forma:

<?php
/*
Template Name: Feed Páginas
*/

 
function yoast_rss_date( $timestamp = null ) {
  $timestamp = ($timestamp==null) ? time() : $timestamp;
  echo date(DATE_RSS, $timestamp);
}
 
function yoast_rss_text_limit($string, $length, $replacer = '...') {
  $string = strip_tags($string);
  if(strlen($string)> $length)
    return (preg_match('/^(.*)\W.*$/', substr($string, 0, $length+1), $matches) ? $matches[1] : substr($string, 0, $length)) . $replacer;   
  return $string;
}

$args = array(
    'posts_per_page' => 10,
    'post_type' => page,
);
 
$posts = query_posts($args);
 
$lastpost = $numposts - 1;
 
header("Content-Type: application/rss+xml; charset=UTF-8");
echo '<?xml version="1.0"?>';
?><rss version="2.0">
<channel>
  <title>Últimas páginas publicadas</title>
  <link>http://www.tublog.com/</link>
  <description>Las últimas páginas publicadas.</description>
  <language>es-cl</language>
  <pubDate><?php yoast_rss_date( strtotime($ps[$lastpost]->post_date_gmt) ); ?></pubDate>
  <lastBuildDate><?php yoast_rss_date( strtotime($ps[$lastpost]->post_date_gmt) ); ?></lastBuildDate>
  <managingEditor>joost@yoast.com</managingEditor>
<?php foreach ($posts as $post) { ?>
  <item>
    <title><?php echo get_the_title($post->ID); ?></title>
    <link><?php echo get_permalink($post->ID); ?></link>
    <description><?php echo '<![CDATA['.yoast_rss_text_limit($post->post_content, 500).'<br/><br/>Ver la fiche de <a href="'.get_permalink($post->ID).'">'.get_the_title($post->ID).'</a>'.']]>';  ?></description>
    <pubDate><?php yoast_rss_date( strtotime($post->post_date_gmt) ); ?></pubDate>
    <guid><?php echo get_permalink($post->ID); ?></guid>
  </item>
<?php } ?>
</channel>
</rss>

Para usarlo sólo deben crear una página nueva y elegir la plantilla "Feed Páginas" y listo.

Ahora sólo entren a la nueva página y verán su feed nuevo.

]]>
http://programoweb.com/feed-ultimas-paginas-wordpress.html/feed 2
Traducir fechas en WordPress 3 http://programoweb.com/traducir-fechas-wordpress-3.html http://programoweb.com/traducir-fechas-wordpress-3.html#comments Mon, 26 Jul 2010 01:28:33 +0000 JuanK http://programoweb.com/?p=1512

El otro día leí en mi reader un artículo de WordPress Hacks donde decían como traducir las fechas de WP, al principio lo pasé por alto, pero luego me acordé que mi blog está en inglés, ya que me acostumbré a usarlo así, y quise traducir las fechas.

Para lograrlo sólo debemos editar el archivo locale.php en la carpeta wp-includes y es tán simple como traducir los días y meses, que por defecto vienen en inglés, no hay ninguna ciencia.

El código lo puedes copiar desde este archivo de texto, o si quieres verlo, aquí está:

<?php

/**

 * Date and Time Locale object

 *

 * @package WordPress

 * @subpackage i18n

 */

/**

 * Class that loads the calendar locale.

 *

 * @since 2.1.0

 */

class WP_Locale {

    /**

     * Stores the translated strings for the full weekday names.

     *

     * @since 2.1.0

     * @var array

     * @access private

     */

    var $weekday;

    /**

     * Stores the translated strings for the one character weekday names.

     *

     * There is a hack to make sure that Tuesday and Thursday, as well

     * as Sunday and Saturday don't conflict. See init() method for more.

     *

     * @see WP_Locale::init() for how to handle the hack.

     *

     * @since 2.1.0

     * @var array

     * @access private

     */

    var $weekday_initial;

    /**

     * Stores the translated strings for the abbreviated weekday names.

     *

     * @since 2.1.0

     * @var array

     * @access private

     */

    var $weekday_abbrev;

    /**

     * Stores the translated strings for the full month names.

     *

     * @since 2.1.0

     * @var array

     * @access private

     */

    var $month;

    /**

     * Stores the translated strings for the abbreviated month names.

     *

     * @since 2.1.0

     * @var array

     * @access private

     */

    var $month_abbrev;

    /**

     * Stores the translated strings for 'am' and 'pm'.

     *

     * Also the capalized versions.

     *

     * @since 2.1.0

     * @var array

     * @access private

     */

    var $meridiem;

    /**

     * The text direction of the locale language.

     *

     * Default is left to right 'ltr'.

     *

     * @since 2.1.0

     * @var string

     * @access private

     */

    var $text_direction = 'ltr';

    /**

     * Imports the global version to the class property.

     *

     * @since 2.1.0

     * @var array

     * @access private

     */

    var $locale_vars = array('text_direction');

    /**

     * Sets up the translated strings and object properties.

     *

     * The method creates the translatable strings for various

     * calendar elements. Which allows for specifying locale

     * specific calendar names and text direction.

     *

     * @since 2.1.0

     * @access private

     */

    function init() {

        // The Weekdays

        $this->weekday[0] = /* translators: weekday */ __('Domingo');

        $this->weekday[1] = /* translators: weekday */ __('Lunes');

        $this->weekday[2] = /* translators: weekday */ __('Martes');

        $this->weekday[3] = /* translators: weekday */ __('Miércoles');

        $this->weekday[4] = /* translators: weekday */ __('Jueves');

        $this->weekday[5] = /* translators: weekday */ __('Viernes');

        $this->weekday[6] = /* translators: weekday */ __('Sábado');

        // The first letter of each day.  The _%day%_initial suffix is a hack to make

        // sure the day initials are unique.

        $this->weekday_initial[__('Domingo')]    = /* translators: one-letter abbreviation of the weekday */ __('D_Domingo_initial');

        $this->weekday_initial[__('Lunes')]    = /* translators: one-letter abbreviation of the weekday */ __('L_Lunes_initial');

        $this->weekday_initial[__('Martes')]   = /* translators: one-letter abbreviation of the weekday */ __('M_Martes_initial');

        $this->weekday_initial[__('Miércoles')] = /* translators: one-letter abbreviation of the weekday */ __('M_Miércoles_initial');

        $this->weekday_initial[__('Jueves')]  = /* translators: one-letter abbreviation of the weekday */ __('J_Jueves_initial');

        $this->weekday_initial[__('Viernes')]    = /* translators: one-letter abbreviation of the weekday */ __('V_Viernes_initial');

        $this->weekday_initial[__('Sábado')]  = /* translators: one-letter abbreviation of the weekday */ __('S_Sábado_initial');

        foreach ($this->weekday_initial as $weekday_ => $weekday_initial_) {

            $this->weekday_initial[$weekday_] = preg_replace('/_.+_initial$/', '', $weekday_initial_);

        }

        // Abbreviations for each day.

        $this->weekday_abbrev[__('Domingo')]    = /* translators: three-letter abbreviation of the weekday */ __('Dom');

        $this->weekday_abbrev[__('Lunes')]    = /* translators: three-letter abbreviation of the weekday */ __('Lun');

        $this->weekday_abbrev[__('Martes')]   = /* translators: three-letter abbreviation of the weekday */ __('Mar');

        $this->weekday_abbrev[__('Miércoles')] = /* translators: three-letter abbreviation of the weekday */ __('Mie');

        $this->weekday_abbrev[__('Jueves')]  = /* translators: three-letter abbreviation of the weekday */ __('Jue');

        $this->weekday_abbrev[__('Viernes')]    = /* translators: three-letter abbreviation of the weekday */ __('Vie');

        $this->weekday_abbrev[__('Sábado')]  = /* translators: three-letter abbreviation of the weekday */ __('Sab');

        // The Months

        $this->month['01'] = /* translators: month name */ __('Enero');

        $this->month['02'] = /* translators: month name */ __('Febrero');

        $this->month['03'] = /* translators: month name */ __('Marzo');

        $this->month['04'] = /* translators: month name */ __('Abril');

        $this->month['05'] = /* translators: month name */ __('Mayo');

        $this->month['06'] = /* translators: month name */ __('Junio');

        $this->month['07'] = /* translators: month name */ __('Julio');

        $this->month['08'] = /* translators: month name */ __('Agosto');

        $this->month['09'] = /* translators: month name */ __('Septiembre');

        $this->month['10'] = /* translators: month name */ __('Octubre');

        $this->month['11'] = /* translators: month name */ __('Noviembre');

        $this->month['12'] = /* translators: month name */ __('Diciembre');

        // Abbreviations for each month. Uses the same hack as above to get around the

        // 'May' duplication.

        $this->month_abbrev[__('Enero')] = /* translators: three-letter abbreviation of the month */ __('Ene_Enero_abbreviation');

        $this->month_abbrev[__('Febrero')] = /* translators: three-letter abbreviation of the month */ __('Feb_Febrero_abbreviation');

        $this->month_abbrev[__('Marzo')] = /* translators: three-letter abbreviation of the month */ __('Mar_Marzo_abbreviation');

        $this->month_abbrev[__('Mayo')] = /* translators: three-letter abbreviation of the month */ __('May_Mayo_abbreviation');

        $this->month_abbrev[__('Junio')] = /* translators: three-letter abbreviation of the month */ __('Jun_Junio_abbreviation');

        $this->month_abbrev[__('Julio')] = /* translators: three-letter abbreviation of the month */ __('Jul_Julio_abbreviation');

        $this->month_abbrev[__('Agosto')] = /* translators: three-letter abbreviation of the month */ __('Ago_Agosto_abbreviation');

        $this->month_abbrev[__('Septiembre')] = /* translators: three-letter abbreviation of the month */ __('Sep_Septiembre_abbreviation');

        $this->month_abbrev[__('Octubre')] = /* translators: three-letter abbreviation of the month */ __('Oct_Octubre_abbreviation');

        $this->month_abbrev[__('Noviembre')] = /* translators: three-letter abbreviation of the month */ __('Nov_Noviembre_abbreviation');

        $this->month_abbrev[__('Diciembre')] = /* translators: three-letter abbreviation of the month */ __('Dic_Diciembre_abbreviation');

        foreach ($this->month_abbrev as $month_ => $month_abbrev_) {

            $this->month_abbrev[$month_] = preg_replace('/_.+_abbreviation$/', '', $month_abbrev_);

        }

        // The Meridiems

        $this->meridiem['am'] = __('am');

        $this->meridiem['pm'] = __('pm');

        $this->meridiem['AM'] = __('AM');

        $this->meridiem['PM'] = __('PM');

        // Numbers formatting

        // See http://php.net/number_format

        /* translators: $thousands_sep argument for http://php.net/number_format, default is , */

        $trans = __('number_format_thousands_sep');

        $this->number_format['thousands_sep'] = ('number_format_thousands_sep' == $trans) ? ',' : $trans;

        /* translators: $dec_point argument for http://php.net/number_format, default is . */

        $trans = __('number_format_decimal_point');

        $this->number_format['decimal_point'] = ('number_format_decimal_point' == $trans) ? '.' : $trans;

        // Import global locale vars set during inclusion of $locale.php.

        foreach ( (array) $this->locale_vars as $var ) {

            if ( isset($GLOBALS[$var]) )

                $this->$var = $GLOBALS[$var];

        }

    }

    /**

     * Retrieve the full translated weekday word.

     *

     * Week starts on translated Sunday and can be fetched

     * by using 0 (zero). So the week starts with 0 (zero)

     * and ends on Saturday with is fetched by using 6 (six).

     *

     * @since 2.1.0

     * @access public

     *

     * @param int $weekday_number 0 for Sunday through 6 Saturday

     * @return string Full translated weekday

     */

    function get_weekday($weekday_number) {

        return $this->weekday[$weekday_number];

    }

    /**

     * Retrieve the translated weekday initial.

     *

     * The weekday initial is retrieved by the translated

     * full weekday word. When translating the weekday initial

     * pay attention to make sure that the starting letter does

     * not conflict.

     *

     * @since 2.1.0

     * @access public

     *

     * @param string $weekday_name

     * @return string

     */

    function get_weekday_initial($weekday_name) {

        return $this->weekday_initial[$weekday_name];

    }

    /**

     * Retrieve the translated weekday abbreviation.

     *

     * The weekday abbreviation is retrieved by the translated

     * full weekday word.

     *

     * @since 2.1.0

     * @access public

     *

     * @param string $weekday_name Full translated weekday word

     * @return string Translated weekday abbreviation

     */

    function get_weekday_abbrev($weekday_name) {

        return $this->weekday_abbrev[$weekday_name];

    }

    /**

     * Retrieve the full translated month by month number.

     *

     * The $month_number parameter has to be a string

     * because it must have the '0' in front of any number

     * that is less than 10. Starts from '01' and ends at

     * '12'.

     *

     * You can use an integer instead and it will add the

     * '0' before the numbers less than 10 for you.

     *

     * @since 2.1.0

     * @access public

     *

     * @param string|int $month_number '01' through '12'

     * @return string Translated full month name

     */

    function get_month($month_number) {

        return $this->month[zeroise($month_number, 2)];

    }

    /**

     * Retrieve translated version of month abbreviation string.

     *

     * The $month_name parameter is expected to be the translated or

     * translatable version of the month.

     *

     * @since 2.1.0

     * @access public

     *

     * @param string $month_name Translated month to get abbreviated version

     * @return string Translated abbreviated month

     */

    function get_month_abbrev($month_name) {

        return $this->month_abbrev[$month_name];

    }

    /**

     * Retrieve translated version of meridiem string.

     *

     * The $meridiem parameter is expected to not be translated.

     *

     * @since 2.1.0

     * @access public

     *

     * @param string $meridiem Either 'am', 'pm', 'AM', or 'PM'. Not translated version.

     * @return string Translated version

     */

    function get_meridiem($meridiem) {

        return $this->meridiem[$meridiem];

    }

    /**

     * Global variables are deprecated. For backwards compatibility only.

     *

     * @deprecated For backwards compatibility only.

     * @access private

     *

     * @since 2.1.0

     */

    function register_globals() {

        $GLOBALS['weekday']         = $this->weekday;

        $GLOBALS['weekday_initial'] = $this->weekday_initial;

        $GLOBALS['weekday_abbrev']  = $this->weekday_abbrev;

        $GLOBALS['month']           = $this->month;

        $GLOBALS['month_abbrev']    = $this->month_abbrev;

    }

    /**

     * PHP4 style constructor which calls helper methods to set up object variables

     *

     * @uses WP_Locale::init()

     * @uses WP_Locale::register_globals()

     * @since 2.1.0

     *

     * @return WP_Locale

     */

    function WP_Locale() {

        $this->init();

        $this->register_globals();

    }

    /**

     * Checks if current locale is RTL.

     *

     * @since 3.0.0

     * @return bool Whether locale is RTL.

     */

     function is_rtl() {

        return 'rtl' == $this->text_direction;

     }

}

/**

 * Checks if current locale is RTL.

 *

 * @since 3.0.0

 * @return bool Whether locale is RTL.

 */

function is_rtl() {

    global $wp_locale;

    return $wp_locale->is_rtl();

}

?>

Después sólo debes subir el archivo nuevo y sobreescribir el antiguo (esta es la parte obvia, pero igual la escribo).

Espero que les sea útil.

]]>
http://programoweb.com/traducir-fechas-wordpress-3.html/feed 2
WordPress 3.2 necesitará MySQL 5 http://programoweb.com/wordpress-3-2-necesitara-mysql-5.html http://programoweb.com/wordpress-3-2-necesitara-mysql-5.html#comments Sat, 24 Jul 2010 15:54:05 +0000 JuanK http://programoweb.com/?p=1508

Ayer, desde el blog oficial de WordPress anunciaron la "muerte" de PHP 4 y MySQL 4, obligándonos a utilizar un hosting con PHP 5 y MySQL 5 para la versión 3.2 de WordPress.

Esto es algo realmente malo, ya que están pidiendo cosas que no todos los hosts tienen, lo que se traducirá en una migración de parte de muchos usuarios a otros proveedores con mejores características, lo que implica un mayor gasto de dinero, siendo que WP es totalmente gratis :S.

Esto es algo, que en lo personal no me afecta, pero es obvio que no todos pueden decir lo mismo, aunque también puede ser un avance para la comunidad de desarrolladores, ya que estás nuevas versiones (PHP y MySQL) son muchos más fiables, seguras y rápidas, además evitaremos código extra en el núcleo de WP.

También han publicado un plugin, llamado Health Check plugin, que permite saber si tu hosting tiene los requisitos necesarios. Además les aviso que la versión 3.2 estará para el próximo año, por lo tanto aún tenemos tiempo de prepararnos para un cambio de host si es necesario.

Por último les dejo este comentario que publicaron en Ayuda WP, donde Darío Ferrer da a conocer su punto de vista y es realmente bueno, acierta en todo lo que dice, por lo que está actualización no deja de ser buena.

]]>
http://programoweb.com/wordpress-3-2-necesitara-mysql-5.html/feed 2
Saber cuando se actualiza el PageRank http://programoweb.com/saber-cuando-actualiza-pagerank.html http://programoweb.com/saber-cuando-actualiza-pagerank.html#comments Sat, 24 Jul 2010 15:26:33 +0000 JuanK http://programoweb.com/?p=1505 El PageRank es algo que a muchos les importa, cuando el mismo Google ha dicho que no hay que tomarle mucha importancia. Para aquellas personas que les interesa ahora podemos saber de forma oficial cuando se actualiza el PageRank, tan sólo debemos seguir esta cuenta en Twitter: @google_update.

]]>
http://programoweb.com/saber-cuando-actualiza-pagerank.html/feed 0
Herramientas SEO gratis http://programoweb.com/herramientas-seo-gratis.html http://programoweb.com/herramientas-seo-gratis.html#comments Fri, 23 Jul 2010 01:30:14 +0000 JuanK http://programoweb.com/?p=1503 En Tensaiweb han publicado un artículo donde nos muestran 10 herramientas SEO gratuitas las que nos pueden ayudar a encontrar las mejores palabras clave para nuestros sitios. Asegúrate de probar algunas de estas herramientas, que de seguro te serán muy útiles.

]]>
http://programoweb.com/herramientas-seo-gratis.html/feed 2
Lista de Blogs de Programación http://programoweb.com/lista-de-blogs-de-programacion.html http://programoweb.com/lista-de-blogs-de-programacion.html#comments Tue, 20 Jul 2010 04:32:11 +0000 JuanK http://programoweb.com/?p=1500 Hace unos días dije que escribiría una lista con los blogs que tengo en en el feed de artículos sobre programación. Por causas ajenas a mí, léase vacaciones, se me olvidó completamente que lo haría, pero aquí estamos de nuevo.

El feed se publica desde mi feed de mi lector de feeds. ¿Un poco más simple?, en mi lector  de feeds tengo varios blogs de programación, todos dentro de una carpeta, las cuales tienen su propio feed; esto pasa en Google Reader, no sé si se puede hacer con otros lectores, pero yo soy fan de Google (?).

Ese feed lo pasé a FeedBurner solo por comodidad, ya que es más fácil de manejar, con más funciones y lo mejor de todo, una url mucho más fácil de recordar.

Luego de la explicación fome viene lo bueno, la lista:

Recuerden que si quieren seguir estos sitios hagánlo desde nuestro feed, es mucho más cómodo y rápido, además que se irán incluyendo más mientras encuentre algunos que valgan la pena ;)

Espero que se les sean útiles y si conocen algunos que no estén aquí citados avisen en los comentarios, tal vez los agregamos.

]]>
http://programoweb.com/lista-de-blogs-de-programacion.html/feed 0
Artículos sobre Programación Web http://programoweb.com/articulos-programacion-web.html http://programoweb.com/articulos-programacion-web.html#comments Tue, 13 Jul 2010 03:15:33 +0000 JuanK http://programoweb.com/?p=1496

Siempre estoy buscando formas de ayudar con lo mismo que yo leo, una de las formas que ha funcionado es compartiendo los enlaces, pero hacerlo a mano es aburrido y lento, por eso me gusta hacer que las cosas se actualicen automáticamente.

En este post quiero mostrarles un feed que creé con el fin de compartir links sobre Programación Web, gran parte de los posts publicados están en inglés, pero de todas formas hay algunos en español.

En este feed encontrarás de todo tipo de lenguajes de programación, especialmente PHP, MySQL, JavaScript (jQuery principalmente) y hartas cosas más.

Si quieres seguir las actualizaciones puedes hacerlo de 4 formas:

  1. A través de twitter: @programoweb
  2. A través de Tumblr: Planet Programo Web
  3. A través del mail.
  4. Con un lector de feeds.

En twitter ya tenemos más de 100 followers, espero poder aumentarlos, aunque pueden usar las demás opciones si quieren.

Mañana publicaré una lista con los sitios que se encuentran en el feed, para que sepan cuales son y ustedes mismos puedan aportar algunos ;)

]]>
http://programoweb.com/articulos-programacion-web.html/feed 0
Error 404 – Ajustes finales http://programoweb.com/error-404-ajustes-finales.html http://programoweb.com/error-404-ajustes-finales.html#comments Mon, 12 Jul 2010 22:59:23 +0000 JuanK http://programoweb.com/?p=1486 Buee, no se como empezar, luego de casi un mes sin escribir algo me siento raro, pero debo decir que tenía el diseño final de la página de error desde hace 20 días :S.

Ahora, este es el post final sobre la creación de la página de Error 404, podemos decir que ya hicimos todo lo difícil, ahora sólo nos falta mejorar un poco nuestro primer intento con un poco de CSS e imaginación ;)

Habíamos dicho que la página de error llevaría los últimos posts y suscripción al feed, eso es algo simple de hacer.

Para los últimos posts ya hemos visto varios ejemplos de como hacerlo, el más estable y seguro de usar en WordPress es este, que usa funciones nativas de WP para funcionar, pero en el ejemplo voy a usar el método con FeedBurner, fue más simple y además el diseño lo tengo hecho en una plantilla HTML básica.

En el post sobre FeedBurner se explica claramente como encontrar el código para usarlo (las imágenes ya no están por problemas de hosting, pero voy a intentar arreglarlas), se trata de un simple javaScript que obtiene los últimos posts, en mi caso elegí que se mostraran 7.

Lo hacemos de esta forma:

<div class="ultimos">
<p>O tal vez quieras revisar nuestros últimos artículos:</p>
<script src="http://feeds.feedburner.com/Blooging?format=sigpro" type="text/javascript"></script>
</div>

Ahora agregamos un poco de CSS:

.ultimos ul {list-style: none; padding-left: 10px;}
.ultimos ul li {background: url(http://programoweb.com/wp-content/themes/Blooging-it!/imagenes/relacionados.png) no-repeat 2px 2px; padding: 0 0 3px 20px;}
#creditfooter { visibility : hidden; height: 0px;}

De esta forma lograremos hacer que se vean bien los enlaces, para que sean agradables a la vista. El div "creditfooter" muestra una imagen de FB, por eso la ocultamos. Ahora pondremos la suscripción al feed, recuerden que dijimos que iría una imagen y un formulario de suscripción por mail.

Empezamos con la imagen:

<div class="feed">
<p>Suscríbete a nuestro sitio:</p>
<a href="http://feeds.feedburner.com/Blooging" title="Feed de Programo Web"><div class="feed-img"></div></a>

Y ahora el formulario para el mail:

<div class="mail">
<form action="http://feedburner.google.com/fb/a/mailverify" method="post" target="popupwindow" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=Blooging', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true"><input type="text" style="width:140px" name="email" value="Ingresa tu email..." onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;"/><input type="hidden" value="Blooging" name="uri"/><input type="hidden" name="loc" value="es_ES"/><input type="submit" value="Suscribirse" /></form>
</div>
</div>

Si lo dejamos de esta forma se ve feo, hay que decirlo, pero nosotros le agregaremos un poco de CSS para mejorar el aspecto:

.feed {float: right; margin: -170px 0 0 0; width: 500px;}
.feed a {width: 96px;}
.feed p {margin-left: 50px;}
.feed-img {height: 96px; width: 96px; background: url(feed-plomo.png); margin-left: 50px;}

.mail {margin: -70px 0 0 200px;}

Ahora se ve aceptable nuestra página de error y podemos decir que está lista. En el siguiente link podrán verla funcionando:

Demo Error 404

Como mencioné en el primer post, la idea de hacer esto es que los usuarios sientan la necesidad de explorar el sitio, pero sin ser molestos, ya que todo se ve ordenado.

Espero que les sea útil este simple tutorial, cualquier duda háganla en los comentarios ;)

]]>
http://programoweb.com/error-404-ajustes-finales.html/feed 0