jQuery

Una de las mejores maneras de buscar un error en jQuery es, definitivamente, asegurarse de que la librería está cargada en WordPress.

Anuncios

Trabajar con “Checkboxes” y Custom Post Type en WordPress

Con Custom Post Type podemos realizar infinidad de tipos de Posts y recientemente, mientras trabajaba en una aplicación de reportes, tuve que añadir algunos checkboxes donde el cliente pudiera definir algúnas variables que no se podían manejar con input type="select" por ejemplo.

Sin embargo, hay que aplicar un pequeño truco con los checkboxes ya que se debe “rescatar” la variable del $_POST y guardar el valor en otra variable.

Generalmente, si trabajamos con input type="text", textarea o input type="select" podemos guardar las variables de la siguiente manera:

add_action('save_post', 'save_details');
function save_details() {
global $post;
$my_var_1 = "my_var_name";
update_post_meta($post->ID, $my_var_1, $_POST[ $my_var_1 ]);
}

Donde my_var_name es el nombre de la variable enviada por un input y $_POST[ $my_var_1 ] rescata el valor de esa variable.

Ahora, si trabajamos con checkboxes, antes de la función update_post_meta debemos hacer comprobar si el checkbox fué marcado y luego rescatamos la variable. Por ejemplo:

add_action('save_post', 'save_details');
function save_details() {
global $post;
$my_chckbx_name = "option_a";
$my_option_a = 0;
// Pregunto si $my_var_name existe
if( isset( $_POST[ $my_var_name ] ) ) {
// Si existe, le asigno el valor a $my_chckbx
$my_chckbx = $_POST[ $my_var_name ];
// Pregunto si $my_chckbx tiene el valor enviado por el checkbox marcado
if ( $my_chckbx == "ON" ) {
// Si el checkbox fué marcado, le asigno el valor de 1 a la variable $my_option_a y la guardo luego
$my_option_a = 1;
} else { $my_option_a = 0; }
}
update_post_meta($post->ID, $my_chckbx_name, $_POST[ $my_option_a ]);
}

El código para generar el checkbox sería:

<?php function my_checkbox() {
global = $post;
$my_post_metas = get_post_custom( $post->ID );
$my_option = "my_option_a";
$my_checkbox = $my_post_metas[ $the_option ][ 0 ];
$my_vars = array( 0 =&gt; array( $my_option, $my_checkbox, "option a" ) );
// Ahora coloco el checkbox en HTML
<input
type="checkbox"
name="<?php echo $my_vars[ 0 ][ 0 ]; ?>"
value="ON"
<?php if( $my_vars[ 0 ][ 1 ] == 1 ) {
echo 'checked="checked"';
} else { // Do Nothing
} ?> />
<?php } ?>

Hacer un calendario “sin” un calendario

Si eres de los que diseña un sitio en WordPress y no te gusta una “sidebar” automática por el hecho de que prefieres colocar tu propio contenido, entonces has llegado a un buen lugar para discutir algunas aplicaciones de sidebars manuales.

Una de las cosas que uno siempre quiere tener en una página de noticias es un calendario de próximos eventos. He encontrado una manera sencilla de incluir eventos futuros y ordenarlos como calendarios en el front-page del sitio y crear la actividad como un post más. Solo que cada uno de estos posts están categorizados como “calendario” y la fecha de publicación la cambio al día en que se realizará el evento (Lado derecho superior -> Opciones de “Publicar” -> Publicar Inmediatamente -> “Editar”). Inclusive, si se tiene una hora específica, se puede hacer la publicación futura con todos los datos necesarios.

Luego, con un WP_Query() se extraen los datos del post.

Se debe tomar en cuenta que como argumento de búsqueda, se debe utilizar 'post_status=future' y 'order=DESC' para que de esta manera obtengamos los resultados ordenados de “más próximos” a “mas lejanos”. Incluso, con otro WP_Query() podemos mostrar los últimos eventos ya realizados y mostrarlos antes de el próximo a realizarse.

$my_query = new WP_Query('post_status=future&order=DESC&showposts=5');
while ($my_query->have_posts()) : $my_query->the_post();
$do_not_duplicate = $post->ID; ?>
<?php echo the_date(); ?>
<?php echo the_title();
echo 'here';?>
<?php endwhile;?>

Como no repetir posts que ya aparecen en el front-page.php?

Con la nueva versión Release Candidate 3.0 de WordPress, se puede utilizar una página de inicio diferente a la contenedora del lazo principal y de esta manera poder personalizar de mejor manera nuestro sitio web.

Sin embargo, hoy estuve colocando algunas cosas en la página principal de uno de mis clientes y al inicio de esta, se encuentran una especie de “Titulares” (con etiqueta Titulares) que luego no quisiera mostrar nuevamente en el resto de la página (en una sección de la página muestro otros resultados de diversas categorías incluyendo “Titulares”). Luego de una búsqueda insaciable y de probar con diferentes opciones, llegué al sitio más lógico donde se debe llegar cuando se necesita ayuda con algún argumento de una función: WordPress Codex.

Con el argumento 'post__not_in' => array() es posible obtener resultador de un WP_query() sin los elementos específicos que le indiquemos al lazo. En mi caso, en cada “query” voy armando el arreglo de los elementos que estoy mostrando para así evitar mostrarlos nuevamente. El código es algo parecido a lo siguiente:

$titleImg = new WP_Query();
$titleImg->query('cat=3&showposts=5');
$i = 0;
$mainPostID = array();
while ($titleImg->have_posts()) : $titleImg->the_post();
$firstImage = ev_get_firstimage();
$curPostID = $post->ID;
$mainPostID[$i] = $curPostID;
$i++;
... Resto del código

Luego, llamo al arreglo $mainPostID en el próximo query:

<?php
$args = array (
'showposts'=>4,
'cat'=>-7,
'post__not_in'=>$mainPostID,
);
$miniNews = new WP_Query();
$miniNews->query($args);
while ($miniNews->have_posts()) : $miniNews->the_post();

Esta es una manera práctica de evitar posts iguales cuando no tenemos una separación por categorías en cierto Query.

XML en PHP o PHP en XML?

Hace unos días atrás, mientras configuraba Cu3er a través de el archivo XML que este trae, me surgió la duda si era posible automatizar este código con algunas funciones de PHP e inclusive, enlazarlo con WordPress para poder utilizar las funciones mismas de WP. Luegos de algunas horas de búsqueda y de intentos fallidos, supe que la respuesta a ambas preguntas era ¡Si se puede!.

Inicialmente, para que un archivo XML pueda utilizar PHP, el archivo mismo debe ser un archivo PHP. En este caso, el típico config.xml de Cu3ber pasó a ser wp_config_cu3er.php. Luego, al inicio del archivo, se debe colocar el header para que sea reconocido como un archivo XML:

header('Content-type:text/xml; charset=utf-8');

En mi caso, todo el archivo está en PHP y con echo´s he definido las etiquetas XML. No he probado hacerlo con funciones PHP seccionadas y dejar lo demás en texto. Finalmente, para que pueda trabajar con las funciones de WordPress, se debe incluir luego del header, una llamada al archivo de configuración inicial de WP:

include('wp-config.php');

Sin embargo, probé el archivo varias veces pero no lograba correrlo desde la carpeta de mi tema hasta que di con una solución bastante sencilla: lo coloqué en el directorio principal de WordPress y lo enlacé desde el Cu3er llamandolo a su ubicación por URL:

http://www.example.com/wp_config_cu3er.php

De esta manera, el app de Cu3er funciona de maravilla y no se siente ningún retraso por esta configuración. Recomiendo que antes de modificar el archivo con funciones, a este se le coloque el header de XML y la llamada al wp_config y se suba al directorio. Una vez allí, actualizar cada modificación y chequear el archivo corroborando que aparezcan todas las etiquetas que queremos sin errores. Cualquier minimo error que tenga el archivo, hará que Cu3er no funciones apropiadamente. Para la prueba del archivo, prefiero hacerlo en Mozilla Firefox ya que este define de mejor manera que función tiene algún error y si no aparece directamente en el navegador, en la opción de “codigo fuente” siempre aparece la linea que quebró al código.

Luego de unos días de silencio

Luego de unos días en silencio, he realizado algunas modificaciones en WordPress para adaptar el tema al medio noticioso. Con la ayuda de Codex (el área de WordPress.org para desarrolladores) y buscando una gran cantidad de información de distintos diseñadores, las cosas marchan bien aunque es un poco frustrante entender de buenas a primeras la programación completa que ofrece la plataforma.

Sin embargo, con algo de paciencia y practica, se llega a modificar el código rapidamente. Para esto, seguí algunos pasos prácticos dados por el amigo Nick La en su blog “Web Designer Wall” (el mismo creador de BestWebGallery. Básicamente se trata de realizar todo el diseño en una hoja HTML de trabajo (yo la llamé workfile.html) y luego llevar este código a las diferentes partes de la estructura del tema de WordPress – header.php | index.php |footer.php -.

Para complementar un poco el código, utilicé algunas funciones ya definidas por WP en Codex. De esta manera, es totalmente personalizable con la hoja de estilos CSS cada uno de los elementos de la página. En entradas siguientes voy a colocar algunos ejemplos de los códigos utilizados y también de como mudar todo el sitio a otro host.

Publicado con WordPress para BlackBerry.

Segunda prueba desde el Blackberry

Esta es mi segunda prueba desde el blackberry con algunos cambios en el software de WordPress para estos dispositivos. Aun no encuentro como cambiar la apariencia del blog (cuando es hospedado en WordPress) para navegadores móviles.

Quiero probar algunas bondades multimedia que ofrece el software y ver como se ve desde el escritorio. Estoy incluyendo un video y una imagen para probar el auto resizing de WPM.

Nota posterior desde versión de escritorio: El video no se cargó. Pesaba 7mb y en dos oportunidades la aplicación móvil generó error. No hay una manera sencilla de que las imágenes queden centradas desde WPM. Se debe retocar luego desde el escritorio del WPPC o en su defecto, una vez publicada la entrada, volver a abrirla desde WPM y editar las líneas de código HTML que aparacen en el lugar donde debe ir la imágen y agregarle los atributos deseados como eliminar el marco, centrar, cambiar el tamaño o colocar el código dentro del texto para que quede embebida dentro del texto. Finalmente, al buscar el archivo multimedia en el BlackBerry, se debe pulsar la tecla RIM y luego “seleccionar” en lugar de simplemente hacer click sobre la imagen.

Actualización 03JUN2010 -> Se puede llevar la imagen a cualquier lado del post cambiando los valores CSS en la línea de edición de WPM.

Adaptando WordPress

A partir de hoy, comienzo un pequeño proyecto de adaptar WordPress a la web de unos amigos para documentar noticias del ámbito deportivo en la región.  Con algunos cambios en la estructura HTML y CSS de la versión descargable de WP, quizás la tarea no sea muy complicada aunque una vez que comiencen las pruebas, las iré publicando para discutirlas con aquellos que tengan aplicaciones similares. Quizás para algunos ya sea un pan comido este tipo de adaptaciones lo cual es importante para conocer comentarios y resultados en estas prácticas.

WordPress sigue siendo actualmente una herramienta muy potente, manejable y flexible lo cual nos brinda esa oportunidad de configurarla a nuestro mejor estilo.

Ya veremos que nos deparan los días proximos…