WordPress y Woocommerce, problema mostrando medios y productos con variaciones

He estado los últimos días trabajando en una nueva tienda online (OutdoorFeat.cl), sobre WordPress y Woocommerce, y todo iba perfecto: Hice un theme completamente a la medida, intentando usar solo los plugins externos absolutamente necesarios e intentando programar la mayor parte yo mismo.

Todo iba bien. Funcionaba perfecto.

Claro, hasta que apareció un “pero” :(

De un momento a otro (eso creí al menos) en la biblioteca de medios solo me mostraba algunos productos, no todos. Si buscaba algún producto si aparecía, y de todos modos siempre las fotos aparecían sin problemas en el front del sitio. Era solo visibilidad en el dashboard.

Luego, probando hacer un producto con variaciones en woocommerce, se creaban 18 variaciones, pero por algún motivo no se mostraban todas. Solo veía 2 página de 4 variaciones cada una. Faltaban 10 !!!!

Googleé y googleé y solo llegué a algunas preguntas similares cuyo problema era de recursos de servidor. Memoria y tiempos de ejecución. Aumenté ambos por si acaso y nada. igualé otros parámetros a otra tienda online de similares características y nada. Seguía fallando.

En un momento de iluminación, encontré el error. El error fui yo mismo (¿y cuándo no?).

Necesitaba limitar la cantidad de posts a mostrar en el sitio, en las categorías con listados de productos, en los resultados de búsqueda, etc. Así es que hice una función para cambiar el parámetro posts_per_page por defecto:


function limita_posts_default( $query ){
    $query->set('posts_per_page', 4);
    return $query;
}
add_filter('pre_get_posts', 'limita_posts_default');

Y eso era.

Resulta que ese cambio afectaba a todas las queries, y en este caso, aplicaba también al listado de medios en la biblioteca de medios y al listado de variaciones de productos.

Obviamente creo que sería una muy buena idea que los amigos de wordpress separaran algunas cosas entre front y dashboard, pero bueno, es lo que hay.

La solución fue aplicar el límite solo en los casos que fuera necesitando, por ejemplo para el caso de las búsquedas:


function limita_posts_default( $query ){
    if( is_search() ){
        $query->set('posts_per_page', 4);
    }
    return $query;
}
add_filter('pre_get_posts', 'limita_posts_default');

Ojalá a alguien le sirva cuando ande tan perdido como yo andaba,

Meme: Error himno uruguayo

En el partido México vs Uruguay en la Copa América Centenario 2016 ocurrió un grave error: pusieron el himno de Chile en vez del himno de Uruguay. La cara de desencajados de los uruguayos era notable y nadie entendía que pasaba.

Los relatores de Canal 13 contaron que en el ensayo de la tarde había ocurrido el mismo error. Esto me hace pensar ¿no habrá alguien metido su mano por ahí? Y pues claro que nacieron los memes al instante. Yo me matriculé con este que demustra que nadie metió mano, sino que metió dedo XD ja ja ja

Meme-jarita-play-himno-uruguay

Obviamente lo twiteé:

Cómo solucionar error 404 al usar wp-blog-header fuera de WordPress

guia-php-wordpressEstoy usando wordpress solo como backend para manejar el contenido de un sitio, pero en el front no uso todo el sistema de themes, sino que simplemente llamo a wp-blog-header.php al inicio de mis paginas y luego puedo usar las queries que necesito. Este sistema es lo que el mismo codex de wordpress recomienda. ¡Y funciona!!!

Desarrollé todo el sitio y funcionaba todo bien hasta que… :(

…hasta que vi que google no estaba indexando las páginas y que al usar una herramienta online de generación de sitemaps me arrojaba error 404, me decía que la url no existía ¡y yo la estaba viendo!

Pensé en robots.txt, pensé en la opción que trae wordpress para “disuadir a los motores de búsqueda de indexar el sitio”, pensé en algún bloqueo vía .htaccess o en algún bloqueo a nivel de servidor Y NADA. Nada funcionaba.

Luego de googlear un rato llegué al problema y a la solución. Resulta que al usar wp-blog-header.php y no existir una url que pueda traducirse en una ruta válida, de algún modo se lanza una cabecera de error 404 a pesar de que todo el sistema siga funcionando bien, y lo más extraño es que solo afecta a algunos navegadores antiguos y a googlebot. Ese era el drama.

Una de las soluciones era “desarmar” todos los llamados que hace por dentro wp-blog-header.php y dejar solo las líneas necesarias, pero parecía ser mucho código para algo tan simple.

La segunda solución que encontré era la más simple, la probé y funcionó. Era simplemente reemplazar

require('wordpress/wp-blog-header.php');

por

require('wordpress/wp-blog-load.php');

Santo remedio. Ahora el sitio se indexa correctamente y no genera esos errores 404 medio fantasmas que había.

Puedo volver a respirar tranquilo.

Hay días

Hay días en que escribo tonteras
hay días en que me las doy de poeta
hay días en que me creo muy clever
pero hay días en que solo respiro.

Hay días en que quiero quererte
hay días en que no puedo mirarte
hay días en que te siento tan cerca
que hay días que no puedo tocarte.

Si tan solo levantaras la vista
habrían días en que nos miramos perfectos
si algún día me miraras en serio
solo el futuro nos podría barreras.

Hay días con paredes absurdas
hay días con rellenos de nada
habemos personas viviendo
con restos y sobras de nada.

Hay días de bromas pasadas
hay días de cuentos fantasmas
hay días de noches de risas
ocultando verdades tan vanas.

Si tan solo miraras de frente
algún día serías tan ocurrente
de inventar un motivo de amarme
sin excusas para intentar conquistarte.

por Lester

Usar <? en vez de <?php para los scripts PHP

Estoy actualizando mi manera de trabajar en proyectos de desarrollo web y programación, y una de las cosas que estoy haciendo es configurar XAMPP con hosts virtuales para desarrollar en local.

Todo funcionaba perfecto con pruebas de html estático pero ¡¡Cueeecccc!! todo se fue al carajo cuando probé algunos sitios php. Simplemente no me estaba interpretando el código php :S Muy raro.

Probé primero jugando con los .htaccess y los nombres de los dominios locales y nada.

Finalmente llegué al problema: resulta que desde no sé qué versión de php la configuración por defecto obliga a usar
<?php ?>
en vez de solo
<? ?>

La solución es modificar el archivo php.ini y activar (on) la directiva:
short_open_tag=On

Simple, pero me demoró un tiempo llegar a ello.

Chancho en Penta

El grupo chileno Chancho en Piedra se presentó en el Festival del Huaso de Olmué este Jueves 22 de Enero. Más allá de la entretenida presentación musical, en dónde hicieron fusión con ritmos folcklóricos, quedó en el oído de todos una “repasada” que le hicieron a los millonarios y políticos involucrados en el Caso Penta y en el juicio a Martín Larraín durante la canción “Eligiendo una reina”.

Chancho en Piedra en Olmué 2015

Chancho en Piedra en Olmué 2015

Hé aquí el par de estrofas:

“Podremos ver el turbio caso Penta
financiando en forma truculenta
su patrimonio es descomunal
que puede atropellar, arrancar, y no le pasa na’.
En el diario veo a la senadora
y al otro fresco’e raja pidiendo un raspado de olla
son solo títeres de los millonarios
nadie les compra su error involuntario.”

Ja ja ja. Notable.