Archivos de la categoría wordpress

Add to post – Plugin WordPress para añadir contenido al inicio y/o al final de todos los posts

Hola a todos:

Hoy os traigo un plugin que he desarrollado para añadir contenido al principio y/o al final de cada post.

Descripción del plugin:

A veces nos puede interesar añadir contenido que se repite en a todos los posts, puede ser un banner de publicidad, un aviso, una firma al final de cada post, añadir enlaces a redes sociales…,etc.
Si necesitas hacer esto tanto con las entradas que crees nuevas como en las antiguas, en caso de tener mucho contenido en tu blog puede ser muy tedioso ir uno por uno cada vez que necesitas hacer un cambio o añadir algo nuevo.

El plugin que he creado te añadirá el contenido que quieras en todos los posts, tanto los que crees nuevos como en los antiguos.

Al instalar este plugin genera un apartado nuevo en la parte de administración llamado Add to post con dos cajas de texto una si queremos añadir contenido antes de cada post, como por ejemplo un banner o un texto y otra caja de texto donde introduciremos lo que queramos que aparezca al final de cada post, como una firma, un mensaje de despedida, etc.

Cabe destacar que se puede introducir tanto texto como imágenes y también utilizar short codes lo cual puede ser muy útil si queremos mostrar contenido a través de short codes de otros plugins, por ejemplo mostrar productos de woocommerce o cualquier elemento que se pueda generar con un short code.

Instalación

Para instalar el plugin solo tenéis que descargar el archivo .zip e instalarlo en vuestro WordPress.

Si vuestra instalación de WordPress permite añadir plugins directamente desde la administración tenéis que ir a la sección plugins, pulsar en el botón Añadir nuevo y después pulsar el botón Subir plugin. Se abrirá una ventana para seleccionar el archivo, debéis seleccionar el archivo que habéis descargado y pulsar el botón Instalar ahora.

Una vez el plugin se ha instalado pulsaremos en el botón Activar plugin.

Si vuestra instalación de wordpress no admite subir plugins desde la administración entonces teneis que descomprimir el archivo.zip y con vuestro cliente de ftp subir la carpeta del plugin dentro de lar carpeta plugins que a su vez está dentro de wp-content.

Una vez subida teneis que ir a la sección plugins dentro de la administración de wordpress, y buscar en el listado de plugins uno que se llame (rev) add_to_post y pinchar en el enlace Activar:

Descarga

El plugin lo podéis descargar en el enlace de abajo. La descarga es gratuita, lo único que os pido a cambio (tampoco os obligo ;-))  es que os suscribáis a mi blog para estar al día de los últimos posts y que compartáis este posts en las redes sociales.

Pulsa el botón para descargar el plugin:

¿Necesitas un presupuesto para  un desarrollo WordPress a medida?

¿Quieres un plugin a medida que realice una funcionalidad concreta que necesitas para tu WordPress?

Solicita un presupuesto  sin compromiso:

Seguridad en los formularios de wordpress utilizando nonce

 

Hola a todos:

Hoy vamos a ver la manera de añadir más seguridad a nuestros formularios en wordpress utilizando la técnica nonce.

Cuando tenemos un formulario público donde los usuarios pueden enviar datos siempre es una puerta de entrada  susceptible a ser manipulada maliciosamente.

La palabra “nonce” viene de number use once, es decir número utilizado una sola vez.

Esto nos ofrece una seguridad extra a nuestros formularios ya que entre otras cosas permite verificar el origen de la petición y evitar que los datos enviados sean manipulados maliciosamente.

Esta técnica se puede utilizar  en cualquier lenguaje de programación, wordpress nos facilita esta tarea ofreciéndonos la función wp_create_nonce(), que nos generará un número aleatorio que después nos permitirá validar que la petición viene desde nuestro formulario y desde ningún otro sitio.

Para realizar esta validación utilizamos la función de wordpress wp_verify_nonce().

Veamos con un ejemplo la forma de utilizar nonce:

En primer lugar en nuestro formulario añadiremos un campo oculto que contendrá el valor de nonce generado con la función wp_create_nonce().

<form action="" method="post">
<?php // Generamos el nonce ?>
<?php $nonce = wp_create_nonce( 'miformulario' ); ?>
<input type="hidden" name="_wpnonce" value="<?php echo "{$nonce}"; ?>"/>
Nombre:<input tytpe="text" name="nombre" />
<!-- //  mas campos de mi formulario -->
......
......
</form>

 

Como parametro la funcion wp_create_nonce recible una cadena de caracteres que luego debemos utilizar para verificar el nonce. Yo en este caso le he llamado ‘miformulario’.

Ahora en la parte donde recojas los datos recividos desde el formulario verificamos que el nonce es correcto:

<?php
$nonce = $_REQUEST['_wpnonce'];
if ( ! wp_verify_nonce( $nonce, 'miformulario' ) ){
  wp_die( 'nonce no válido' );
}
// Si el nonce es correcto seguimos recogiendo el resto de campos
$nombre = $_POST['nombre'];
//  ...... resto de campos
?>

De esta manera si detecta  que el nonce no es correcto se parara la ejecución mostrando un mensaje de aviso y evitaremos que se ejecute nada indeseado.

Con estos sencillos pasos aportaremos un poco más de seguridad a nuestros formularios en wordpress.

¿Necesitas un presupuesto para  un desarrollo WordPress a medida?

¿Quieres un plugin a medida que realice una funcionalidad concreta que necesitas para tu WordPress?

Solicita un presupuesto  sin compromiso:

Como solucionar problema de incompatibilidad de versión de WordPress y qTranslate

 

Hola todos:

qTranslate es un maravilloso plugin que nos permite tener nuestro sitio creado con WordPress en varios idiomas.

Sin embargo ya me ha pasado que varias veces que cuando actualizo a una nueva versión de WordPress qTranslate se desactiva mostrando este mensaje:

The qTranslate Editor has disabled itself because it hasn’t been tested with your WordPress version yet. This is done to prevent WordPress from malfunctioning. You can reenable it by clicking here (may cause data loss! Use at own risk!). To remove this message permanently, please update qTranslate to the corresponding version.

Reconozco que la primera vez que me paso me asusté y tome la drástica decisión de volver a la versión anterior de wordpress, aquí explico como volver a una versión anterior de wordpress.

Curioseando en el código de qTranslate me di cuenta que que la solución es mucho más sencilla.

Para poder utilizar la versión más reciente de WordPress con el plugin qTranslate antes de que este se actualice solo tenemos en entras en la carpeta plugins que se encuentra dentro de wp-content, localizar la carpeta qtranslate y dentro de esta editar el archivo qtranslate.php.

Tenemos que localizar la linea donde pone:

define('QT_SUPPORTED_WP_VERSION', 'x.x.x');

Donde ‘x.x.x’ será la versión de WordPress que soporta qTranslate, debéis poner la versión actual de WordPress que tenéis instalada.

Y con este pequeño cambio ya podemos seguir usando qTranslate hasta que se actualice para la versión actual de wordpress.

Hay que tener en cuenta la advertencia que aparece en el en el comentario que se encuentra justo encima :

 // qTranslate Editor will only activated for the given version of WordPress.
// Can be changed to use with other versions but might cause problems and/or data loss!

Que viene a decir que puedes cambiar a otra versión pero que podría causar problemas o perdida de datos,en principio los cambios de una versión a otra no suelen ser lo suficientemente grandes como para causar problemas, intenta actualizar qTranslate en cuanto salga la siguiente versión.

Eso es todo por hoy.

¿Necesitas un presupuesto para  un desarrollo WordPress a medida?

¿Quieres un plugin a medida que realice una funcionalidad concreta que necesitas para tu WordPress?

Solicita un presupuesto  sin compromiso:

Usar Media Uploader de Worpress para subir imágenes desde tu plugin o tema.

 

Hola de nuevo:

Hoy os voy a mostrar la manera de añadir el Media Uploader de WordPress donde queramos dentro de el plugin o el theme que estemos desarrollando.

Esto nos permitirá subir y/o asignar la url de la imagen a un campo del formulario que estemos creando.

He añadido también un div contenedor donde se pre-visualizará la imagen seleccionada.

El código html que debemos añadir a nuestro formulario es el siguiente:

<label for=”upload_image”> <input id=”upload_image” type=”text” size=”36″ name=”ad_image” value=”http://” /> <input id=”upload_image_button” class=”button” type=”button” value=”Subir Imagen” /> <br />Introduce una url o sube una imagen. </label>

Ahora debemos crear un archivo javascript ,lo llamaremos por ejemplo wp_uploader.js  y lo vamos a guardar en una carpeta llamada js dentro de la carpeta del plugin que estemos creando.

Editamos el archivo que acabamos de crear y escribimos el siguiente código:

jQuery(document).ready(function($){


 var custom_uploader;


 $('#upload_image_button').click(function(e) {

 e.preventDefault();

 //Si el objeto uploader ya ha sido creado volvemos a abrir el dialogo.
 if (custom_uploader) {
 custom_uploader.open();
 return;
 }

 //Extendemos el objeto wp.media
 custom_uploader = wp.media.frames.file_frame = wp.media({
 title: 'Selecciona Imagen',
 button: {
 text: 'Selecciona Imagen'
 },
 library : { type : 'image'},
 multiple: false
 });

 //Cuando se selecciona un archivo ponemos su URL como valor del campo de texto
 custom_uploader.on('select', function() {
 attachment = custom_uploader.state().get('selection').first().toJSON();
 $('#upload_image').val(attachment.url);
 // Mostramos la imagen dentro del div con id "magen_preview".
 $('#imagen_preview').html('<img src="'+attachment.url+'" style="max-width:200px" />');
 });

 //Abre el dialogo del uploader..
 custom_uploader.open();

 });
});

Ahora solo nos queda añadir el archivo js que acabamos de crear:

En el archivo functions.php del theme o en nuestro plugin ponemos lo siguiente:

add_action('admin_enqueue_scripts', 'upload_script');
function upload_script(){
  wp_enqueue_media ();
  // Esto para cargarlo desde la carpeta js de nuestro plugin, si lo tenemos alojado el otro sitio cambiar url
  wp_enqueue_script( 'uploader',plugins_url( '/js/wp_uploader.js', __FILE__ ));
}

Y con esto ya tenemos un campo en nuestro formulario que al pinchar sobre el botón subir imagen nos abrirá la galería multimedia de WordPress para poder elegir o subir una imagen.

Como siempre espero que os sea de  utilidad. 🙂

¿Necesitas un presupuesto para  un desarrollo WordPress a medida?

¿Quieres un plugin a medida que realice una funcionalidad concreta que necesitas para tu WordPress?

Solicita un presupuesto  sin compromiso:

Como instalar y configurar un servidor de correo SMTP para enviar emails desde localhost con php. (Linux)

 

Hola a todos.

Si estas programando en tu entorno local “localhost” y quieres  mandar mails desde php necesitas tener instalado un servidor de correo  SMTP .

En entornos linux uno de los mas utilizado es  Postfix. Sin embargo si lo que queremos es simplemente poder enviar email desde nuestro entorno de puebas podemos optar por opciones mas livianas y simples.

Una opción ligera es instalar el paquete ssmtp.

En mi caso estoy trabajando desde un viejo portatil con lubuntu instalado, para otras distribuciones no derivadas de ubuntu el proceso de instalación puede ser diferente.

Para instalar el paquete  ssmtp abrimos un terminal y escribimos:

sudo apt-get install ssmtp

Ahora debemos editar el archivo ssmtp.conf:

sudo nano /etc/ssmtp/ssmtp.conf

Descomentamos o añadimos si no existen las siguientes lineas:

mailhub=smtp.gmail.com:587
UseSTARTTLS=YES
AuthUser=<YOUR-EMAIL>@gmail.com
AuthPass=<YOUR-PASSWORD>

Debemos sustituir lo que se encuentra entre “<” y “>”  por nuestros valores.

En este caso vamos a utilizar nuestra cuenta de gmail para enviar el correo así que en AuthUser pondremos nuestra dirección de mail de gmail y enAuthPass la contraseña que utilizamos para acceder a nuestra cuenta de gmail.

Si lo dejamos así en el from del los mails delante de la dirección de correo desde donde se envía aparecerá “www-data”, para poder cambiar el from desde php tenemos que añadir tambien la siguiente linea en  ssmtp.conf:

FromLineOverride=YES

Ahora guardamos el archivo (Ctrl+O si lo editas con nano) y salimos (Ctrl+X).

Ahora tenemos que editar el archivo php.ini para asignar la variable sendmail_path:

sudo nano /etc/php5/apache2/php.ini

Buscamos la linea sendmail_path (Ctrl + W para buscar desde nano).

y la dejamos de la siguiente manera:

sendmail_path = /usr/sbin/ssmtp -t

Guardamos (Ctrl + O) y salimos (Ctrl + X).

Reiniciamos el servidor apache:

sudo /etc/init.d/apache2 restart

Y ya podemos enviar mails desde php utilizando la función mail() o wp_mail() si estais usando wordpress.

¿Necesitas un presupuesto para  un desarrollo WordPress a medida?

¿Quieres un plugin a medida que realice una funcionalidad concreta que necesitas para tu WordPress?

Solicita un presupuesto  sin compromiso:

Añadir etiquetas multi idioma en WordPress con qTranslate mediante código

 

Hola de nuevo,

Cuando editamos un post y añadimos una etiqueta solo lo podemos hacer en un idioma, sin embargo qTranslate nos permite luego editar la etiqueta y añadir la traducción en los idiomas que estén activos.

¿Pero que sucede si estamos programando nuestro propio plugin y queremos añadir dinámicamente mediante código etiquetas a un post?

La función  wp_set_post_tags( ) nos resuelve la mitad del problema.

Ejemplo:

wp_set_post_tags( 35, 'perros,gatos', true );

Esta función nos permite añadir etiquetas a un post, su uso es sencillo:

El primer parámetro es el id del post al que queremos añadir las etiquetas.

El segundo parámetro son el grupo de etiquetas que queremos asignarle, puede se un string con las etiquetas separadas por comas o un array con las etiquetas.

El tercer parámetro es opcional y es un booleano que si esta a true añade las etiquetas a las etiquetas existentes y si está a false sustituye las etiquetas existentes por las nuevas. Este parámetro puede ser un array con las diferentes etiquetas o un String con las etiquetas separadas por comas.

Podéis consultar mas información sobre esta función de wordpress aquí.

El problema es que esta función solo nos permite crear etiquetas en un idioma.

Después de buscar y buscar hasta dejar el cajetín de búsqueda de google con agujetas no he encontrado nada que me sirviese, a si que he decidido crearme mi  propia función para  resolver el problema basándome en el core del plugin qTranslate.

public static function updateTerm($arrTerm)
{
    global $q_config;

    if(isset($arrTerm[$q_config['default_language']]) &&       $arrTerm[$q_config['default_language']]!='')
    {
        $default = htmlspecialchars(qtrans_stripSlashesIfNecessary($arrTerm[$q_config['default_language']]), ENT_NOQUOTES);
        if(!isset($q_config['term_name'][$default]) || !is_array($q_config['term_name'][$default])) $q_config['term_name'][$default] = array();

    foreach($q_config['enabled_languages'] as $lang)
    {
        $arrTerm[$lang] = qtrans_stripSlashesIfNecessary($arrTerm[$lang]);
        if($arrTerm[$lang]!='')
        {
             $q_config['term_name'][$default][$lang] = htmlspecialchars($arrTerm[$lang], ENT_NOQUOTES);
        }
        else
        {
             $q_config['term_name'][$default][$lang] = $default;
        }
    }
    update_option('qtranslate_term_name',$q_config['term_name']);
 }
}

La función recibe como parámetro un array asociativo con la etiqueta en cada idioma.

Ahora por ejemplo si a un post con id=34 quisiéramos añadir las etiqueta ‘gato’ en Español y en Ingles podríamos escribir algo como lo siguiente:

// Añadimos la etiqueta gato al post con id 34

wp_set_post_tags( 34, 'gato');

// creamos un array con la etiqueta traducida en cada idioma y se lo
// pasamos a la función updateTerm()

$etiqueta = array();
$etiqueta['es'] = 'gato';
$etiqueta['en'] = 'cat';
updateTerm($etiqueta);

Solo me queda comentar que la clave del array asociativo es el código iso del idioma, y deberéis crear la traducción de la etiqueta para todos los idiomas que tengáis activos.

Espero que os sirva de ayuda.

¿Necesitas un presupuesto para  un desarrollo WordPress a medida?

¿Quieres un plugin a medida que realice una funcionalidad concreta que necesitas para tu WordPress?

Solicita un presupuesto  sin compromiso:

Que hacer cuando WordPress muestra el mensaje "No disponible por mantenimiento programado. Vuelve a comprobar el sitio en unos minutos"

 

Hola a todos,

Probando en localhost a actualizar una versión bastante antigua de wordpress me he encontrado con la desagradable sorpresa de que no me dejaba entrar el el blog mostrando el siguiente mensaje: “No disponible por mantenimiento programado. Vuelve a comprobar el sitio en unos minutos”.

Sin embargo vuelves a intentarlo al de unos minutos y sigue igual.

La solución por suerte es muy sencilla. En el directorio principal donde tengáis instalado wordpress hay que localizar el archivo .maintenance y eliminarlo.

Al llevar un punto por delante significa que es un archivo oculto a si que si estáis trabajando en local tendréis que mostrar los archivos ocultos para encontrarlo.

Si accedéis a un servidor remoto por ftp tenéis que buscar en vuestro cliente ftp la opción para mostrar archivos ocultos.

En filezilla tenéis que ir a la pestaña servidor y seleccionar forzar mostrar archivos ocultos.

Captura de pantalla 2014-02-14 a la(s) 12.50.44

Espero que os sirva de ayuda, Un saludo 🙂

¿Necesitas un presupuesto para  un desarrollo WordPress a medida?

¿Quieres un plugin a medida que realice una funcionalidad concreta que necesitas para tu WordPress?

Solicita un presupuesto  sin compromiso:

Como volver a la versión anterior de WordPress cuando falla algún plugin después de actualizar.

 

Hola a todos.

Hoy no he podido resistir ta tentación de darle a actualizar wordpress cuando he visto el aviso de que había una actualización. Se que es tentador y somos débiles…. , pero hacedme caso, no lo hagáis hasta que no estéis seguros de que todos lo plugins que tenéis instalados funcionan correctamente con la nueva versión.

Nada más actualizar me ha salido el siguiente mensaje:

"The qTranslate Editor has disabled itself because it hasn't been tested with your WordPress version yet. ...."

Supongo que es cuestión de tiempo que qTranslate se actualice para ser compatible con la nueva versión de WordPress pero hasta entonces sera mejor seguir con la versión anterior.

¿Como podemos volver  a la versión anterior de WordPress?

Afortunadamente es bastante sencillo. Si eres de los precavidos que hacen backups  con frecuencia de todos los archivos de tu sitio solo tienes que coger un backup y copiar todos los archivos de nuevo, y cuando digo todos no me refiero solo a lo que tienes en wp-content si no todos los archivos de wordpress.

Si no tenemos un backup de todos los archivos de la versión anteriór debemos bajarnos la versión anterior  de wordpress: http://es.wordpress.org/releases/#older.

Una vez descargada y descomprimida la carpeta debéis  subir por ftp (o copiar si estáis trabajando en local) todos los archivos y carpetas sustituyendo a los existentes manteniendo la carpetas wp-content y wp-config y el archivo .htaccess.

Es muy importante no sobrescribir estas carpetas y el .htacces. ya que podemos perder lo que tenemos, por eso antes de hacer nada  siempre es recomendable hacer una copia de los archivos y  una copia de seguridad de la base de datos.

Una vez de sobrescribir los archivos con la versión anterior (salvo los mencionados arriba), si entramos en /wp-admin veremos que hemos vuelto a la versión anterior y todo debería funcionar como antes.

Eso es todo.

Salud!!!

¿Necesitas un presupuesto para  un desarrollo WordPress a medida?

¿Quieres un plugin a medida que realice una funcionalidad concreta que necesitas para tu WordPress?

Solicita un presupuesto  sin compromiso:

WordPress – Acceder al idioma seleccionado y los idiomas activos de qTranslate desde javascript.

Hola a todos:

Hoy toca hablar de WordPress y de ese maravilloso plugin que nos permite utilizar varios idiomas en los sitios creados con WordPress llamado qTranslate.

A veces podemos necesitar saber cual es el idioma que está seleccionado para realizar una acción determinada en función a esté.

Para obtener el código iso del idioma actual escribimos esto:

<?php
    $global $q_config;
    $iso = qtrans_getLanguage();

    echo 'El idioma actual es: '.$iso;
?>

Por ejemplo si el idioma actual es el español  obtendríamos esto:

El idioma actual es:  es

Si queremos obtener el nombre del idioma en lugar de su iso escribimos esto:

<?php
    $global $q_config;
    $iso = qtrans_getLanguage(); // obtenemos el código iso.
    $idioma =  qtrans_getLanguageName($iso); // Obtenemos el idioma.
    echo 'El idioma actual es: '.$idioma;
?>

Y obtendríamos como resultado algo como esto:

El idioma actual es: Español

Y si queremos saber todos los idiomas activos podemos obtenerlos de esta manera:

<?php

global $q_config;
$activos = $q_config['enabled_languages'];
foreach ($activos as $l)
{
    echo  qtrans_getLanguageName($l).'<br />';
}

?>

Hasta aquí puede que le haya servido de ayuda a alguien pero en el titulo del post ponía ‘desde javascript’, no se me ha olvidado :-).

Puede que escribiendo tu propio plugin, o modificando el tema para darle alguna funcionalidad extra necesites acceder a las variables anteriores pero desde javascript (a mi me ha pasado por eso os cuento todo esto).

Podríamos crear variables globales escritas con php tipo algo así:

<?php  echo  "Idioma =".qtrans_getLanguage()."" ?>

Pero es un método  feo, poco elegante y una mala práctica.

Bien, imaginemos que estamos escribiendo un plugin, lo primero que tendríamos que hacer es añadir el archivo .js donde estarán nuestras funciones javascript.

para ello utilizamos la función de wordpress wp_enqueue_script.

wp_enqueue_script( 'mi_script',plugins_url( '/js/mi_script.js', __FILE__ ));

El primer parámetro es el nombre que le damos para identificar al script,  puede ser el que queramos.

El segundo parámetro es la url donde se encuentra el archivo, en esta ocasión se encuentra en la carpeta de nuestro plugin en una subcarpeta llamada js.

Para obtener la ruta de nuestro plugin utilizamos la función plugins_url();

Y ahora llega el momento mágico, para hacer que las variables php sean accesibles desde nuestro javascript escribimos lo siguiente:

// Obtenemos los idiomas y los pasamos a una variable javascript
global $q_config;
$arrLang = array();
$languages_iso = $q_config['enabled_languages'];
foreach ($languages_iso as $l)
{
  $arrLang[$l] = qtrans_getLanguageName($l);
}

wp_localize_script( 'mi_script', 'lang',array('languages' => $arrLang, 'iso' => qtrans_getLanguage()));

La función  wp_localize_script nos permitirá  acceder desde nuestro javascript a las variables que le pasemos siempre que antes hayamos definido nuestro script con wp_enqueue_script.

El primer parametro de wp_localize_script() debe ser el nombre que le hayamos dado a nuestro script al añadirlo con wp_enqueue_script.

El segundo parámetro es el nombre del objeto desde el cual accederemos desde javascript a los datos, y el tercero es un array que contiene las variables que despues utilizaremos desde javascript.

Ya solo nos queda la parte javascript.

En nuestro archivo mi_script.js cremos por ejemplo pla siguiente función:

function dime_el_idioma(){
    alert(lang.languages[lang.iso]);
}

Llamamos a esta función desde el html por ejemplo con un botón:

<input type="button" onclick="dime_el_idioma()" value="Idioma" />

Si probamos todo esto veremos que al pulsar el botón nos mostrará un alert con el nombre del idioma activo que ahora lo tenemos accesible desde javascript.

Y… eso es todo…

Espero que a alguien le sirva de ayuda.

 

¿Necesitas un presupuesto para  un desarrollo WordPress a medida?

¿Quieres un plugin a medida que realice una funcionalidad concreta que necesitas para tu WordPress?

Solicita un presupuesto  sin compromiso: