Categoría: programación

  • Actualización WP 2.1: error en Dashboard

    Seguimos con el tema de los errores en la actualización a la última versión estable del popular CMS, WordPress 2.1 (a.k.a. Ella).

    En la pantalla principal del panel de administración, se puede leer un mensaje de error en el archivo wp-includes/gettext.php. Concretamente el fichero devuelve un error de este tipo:

    Parse error: syntax error, unexpected ',' in xxxxxxxxxx/wp-includes/gettext.php(313) : eval()'d code on line 1

    No debeis alarmaros. Tal y como he leido en el foro de WordPress, se trata de un fallo en el archivo de traducción es_ES.mo situado en wp-includes/languages/. En realidad faltaría un «;» en la cadena $string -como se indica en el comentario del archivo, pero no está del todo depurado, pues falta reemplazar una , por un ;.
    %%anc%%

    Para solucionarlo, bastará con añadir la línea:

    $string = str_replace(",",";",$string);

    en la línea número 308, justo delante de $string .= ';';.

    zp8497586rq
  • Actualización WP 2.1: ha desaparecido 'wp_link2cat'

    Cuando actualizamos a WordPress 2.1, lo normal es que todo vaya sobre ruedas tras ejecutar el script /wp-admin/upgrade.php. Si no fue tu caso y te topas con el error

    WordPress database error: [Table 'XXXX.wp_link2cat' doesn't exist]
    SELECT category_id FROM wp_link2cat WHERE link_id = 11 ORDER BY category_id

    en cualquiera de sus versiones -diferentes números pero que el error viene a ser el mismo-, no se ha hecho más que eliminar la tabla wp_link2cat, que se encarga de referenciar los grupos de categorías de enlaces con los enlaces en sí, por lo que se perderá toda la interconexión con el blogroll.

    No he mirado el código del script, y tampoco sé si es un fallo o que realmente debe desaparecer la tabla, pero creando de nuevo la tabla y conectando de nuevo los enlaces con sus categorías se debería solucionar. Para ello ejecutaremos en phpMyAdmin o similar, la siguiente consulta SQL:

    CREATE TABLE `wp_link2cat` (
    `rel_id` bigint(20) NOT NULL auto_increment,
    `link_id` bigint(20) NOT NULL default '0',
    `category_id` bigint(20) NOT NULL default '0',
    PRIMARY KEY (`rel_id`),
    KEY `link_id` (`link_id`,`category_id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=32 DEFAULT CHARSET=latin1 AUTO_INCREMENT=32;

    Una vez creada, deberemos crear las categorías de enlaces en el panel de administración de Worpdress en la opción Blogroll->Crear enlace, de igual forma que de si una categoría de una anotación se tratara. Ya hemos hecho lo más dificil.

    Ahora sólo nos quedará ir editando uno a uno los enlaces y asociarlos a la categoría correspondiente que hayamos creado en el segundo paso, para que en el campo Categoria de la lista de enlaces aparezca el correcto. ¿A que ha sido fácil?

    Si tenéis alguna duda acerca de este tema o de otros al realizar la actualización, me lo podéis comentar y lo intentaremos solucionar.

    zp8497586rq
  • Actualización a WordPress 2.1: principales cambios

    Tras la actualización de ayer, la migración del servidor de Hostalia a Dreamhost (enlace referenciado) por diversos motivos y los pequeños problemas que tuve después con algunas de las etiquetas del código de WordPress, creo que lo más interesante será que haga una pequeña lista, apoyándome con la entrada de Lorelle.

    Los cambios más importantes se han dado en las categorías -ahora el blogroll es una categoría más- y cómo son estructurados los posts. Yo aún no lo tengo muy claro y espero solucionar mi blogroll (parte inferior de la página) cuanto antes.

    Yo los mayores cambios que he encontrado han sido en el tratamiento de imágenes al subirlas y asociarlas a un post, en el autoguardado cada X minutos -no he comprobado cuantos- y, como no, en las categorías.

    • get_postdata reemplaza a get_post
    • get_linksbyname (nuevo): devuelve los links asociados a la categoría cat_name.
    • get_linkz reemplaza a get_linkFUNCTION (se facilita el tratamiento pasando de varias a una función)
    • get_options sustituye a get_settings
    • the_search_query puede sustituirse por wp_specialchars
    • language_attributes (nueva): añade los atributos del lenguaje al header del HTML
    • current_user_can sustituye a user_can_FUNCTION (varias funciones en una)
    • get_the_category_by_ID reemplaza a the_category_ID

    Si se os queda algo en el tintero, no dudéis en consultar Codex WordPress, Template Tags y Function Reference. Si todo se hace según los pasos de actualización oficiales, no debería haber problema en la base de datos.

    Si hay alguna de las funciones (como en la lista) que aún no están documentadas, aparecen todas listadas en el archivo ubicado en /wp-includes/deprecated.php

    zp8497586rq
  • Script para bajar imágenes 'hidden'

    El otro día me pidieron descargar un número elevado de imágenes -unas 200- que aparecían en una página web de la universidad. No hubiese sido nada transcendental si las imágenes sólo se mostraran cuando se situara el puntero del ratón sobre el nombre de la imagen. Claro, al ir a situarse con el puntero sobre la imagen, ésta desaparecía porque tenía la propiedad visibility a *hidden*.

    Mirar el código fuente era fundamental, pero tampoco pretendía estar buscando y copiando la ruta de cada imagen para acceder a ella por el navegador. Lo primero que pensé fue utilizar wget desde la consola del servidor, pero no era suficiente, ya que estaba deshabilitada la descarga (baneado) a través del comando en las políticas de Apache en el ficehro .htaccess, a lo que se llama Throttling Apache.

    Me puse a buscar como loco y encontré la solución, utilizar la opción que oculta el tipo de navegador añadiendo -U NoSuchBrowser/1.0, por lo que ya tenía un paso. Claro, ir buscando por el código fuente las imágenes seguía siendo una tarea de chinos, por lo que decidí echar mano al código PHP. Mi idea era escribir en una variable todas las imágenes que había en el código fuente en la etiqueta , por lo que gracias a aNieto encontré el comando preg_match_all, que realiza una comparación global con una expresión regular, es decir, va buscando en el código fuente un patrón casino pa natet y si lo encuentra, guarda el contenido especificado en un array, que más tarde se muestra con un bucle. El código sería algo así:


    $cad_buscar = '/ echo "wget -U NoSuchBrowser/1.0 ruta" . $val[1] . ".jpg
    ";
    }

    Ahora ya todo era diferente. Me hice un pequeño script en bash para que únicamente tuviera que leer las imágenes de un archivo, las comprimiera en otro archivo, cuyo nombre se le pasaba por parámetro y eliminara las imágenes del directorio. De esta manera lo que parecía un trabajo de chinos, lo deje en uno de *vagos*, con el consiguiente conocimiento de algunos comandos que no había utilizado.

    zp8497586rq
  • Plugin WP: Recent Image Post

    Acabo de sacar mi último plugin hasta el día de hoy. Se trata de un código sencillo que lo único que hace es mostrar la primera imagen asociada del post en la barra lateral, con un enlace al post en cuestión. Es un plugin algo particular, por lo que no se utilizará como otros, pero tenía ganas de implementarlo.

    Como aquí no le *pega*, he habilitado mi blog del concurso compuntoes para hacer la demo. La página de Recent Image Post donde está todo explicadito y la descarga.