La página de Er_Maqui

  Modificación de plugin de WordPress


    Por lo mismo que ya indiqué en la sección de blogs, ahora en ocasiones trabajo con wordpress. Cualquiera que trabaje con este sistema de blogs, sabrá que en ocasiones, hay que utilizar plugins para "personalizar" el funcionamiento del blog, o conseguir comportamientos que no sean los estándar. En muchas ocasiones, busco plugins que realicen una tarea determinada, pruebo algunos, y utilizo el que más se ajusta a mis necesidades.

    No obstante, en algunas ocasiones, los plugins que se pueden encontrar en los repositorios de Wordpress no se adaptan completamente a las necesidades de cada uno. Por ese motivo, en ocasiones no quedan más alternativas que o programarse uno mismo el plugin (cosa que en ocasiones hago, pero trato de evitar para no tener que hacer grandes inversiones de tiempo), o utilizar como base un plugin preexistente, que se aproxime a lo que buscamos, y modificarlo para satisfacer nuestros requerimientos. Por ello, aquí voy a hablar de un plugin modificado por mí, no tanto por el plugin en sí, si no por la muestra de que no es algo tan complejo, si no que simplemente impone. Expondré el plugin, su funcionalidad original, la que se trata de obtener, y los pasos llevados a cabo para lograr dicho objetivo. Concretamente, hablaré de un plugin que he modificado recientemente (aun no siendo el único), el demon-image-annotation-sigma.



  Demon-image-annotation-sigma


    Primero, los créditos sobre el plugin (Hay que reconocer el trabajo de los demás).

Plugin original: página de WordPress Plugins para demon-image-annotation.
Creador: DemonlsBlack.
Modificación: página de Mimic-Project para Demon Image Annotation Sigma.



  Las modificaciones realizadas


    El objeto de modificar el plugin no ha sido cambiarlo para hacer nada nuevo, si no únicamente compatibilizarlo con mis propias necesidades. Estos son los cambios que he realizado, partiendo del plugin demon-image-annotation-sigma.

    1º, Actualización: El plugin es perfectamente compatible con las últimas versiones de jQuery y además estas solventan algunos warning. Por lo que este es el primer cambio.
Archivo: imageannotation.php
Línea 17. Cambiar a: wp_register_script('jquery', '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js');
Línea 21. Cambiar a: wp_register_script('jquery-ui', '//code.jquery.com/ui/1.10.4/jquery-ui.min.js');

    2º, Algunos fixes, sobre todo para compatibilidad con temas un poco "tocanarices".
Archivo: css/annotation.css
Línea: 149. Agregamos una línea antes del cierre de la llave con el texto: z-index: 2;

    3º, Compatibilización con WordPress MultiSite.
Archivo: imageannotation-run.php
Línea: 33 y 155. Encontramos: $table_name = $wpdb->prefix . "demon_imagenote";
Agregamos en la siguiente línea tras estas: $table_comment = $wpdb->prefix . "comments";
Después, realizamos un reemplazar en el fichero, donde buscamos: wp_comments y lo cambiamos por ".$table_comment." (Comillas incluidas).

    En principio tras estos cambios tendremos un plugin más funcional y compatible con WPMU. No obstante, debo decir que estos cambios se los he enviado al programador actual del plugin por si los desea incluir en el mainstream, por lo que podría ser que si bajais el plugin de su página los tenga ya aplicados. La idea es que todo el mundo pueda disfrutar de ellos. Como indicaba al principio, estos cambios no modifican la forma de trabajar del plugin o su funcionalidad, simplemente añaden compatibilidad con el sistema MultiSite, y solventan algunos erorres de JavaScript que se mostraban originalmente debido al uso de una versión obsoleta de jQuery.



  Llegando un poco más lejos


    Fruto de una nueva necesidad, doy otro código de modificación para el plugin demon-image-annotation-sigma, la cual, tiene como objeto, permitir ocultar la persona que ha escrito el comentario.

    1º, Vamos a la parte sencilla, hacer que se oculte el texto en caso necesario.
Archivo: imageannotation-run.php (Justo antes de los JSON, agregamos una línea nueva).
Línea 186. Nueva línea: if( (get_option('demon_image_annotation_poster') == '1') ) $author = '';
Línea 208. Nueva línea: if( (get_option('demon_image_annotation_poster') == '1') ) $author = '';

    2º, Esta es la parte complicada, relativamente hablando. Vamos a "crear" una nueva opción de configuración para el plugin.
Archivo: imageannotation-admin.php
Línea: 408 (Tras el bloque thumbnail): Agregamos otro bloque que contendrá:
//image note poster
$dia_poster = $_POST['dia_poster'];
update_option('demon_image_annotation_poster', $dia_poster);

Línea: 437. Nueva línea: $dia_poster = get_option('demon_image_annotation_poster');
Línea: 474 (Tras el bloque de plugin status): Agregamos otro bloque que contendrá:
<tr>
<th>
<label><?php _e("show username poster : " ); ?></label>
</th>
<td>
<?php
$sndisplaymode = array( 0 => __( 'Enable' ), 1 => __( 'Disable' ) );
foreach ( $sndisplaymode as $key => $value) {
$selected = $dia_poster == $key ? 'checked="checked"' : '';
echo "<label><input type='radio' name='dia_poster' value='" . esc_attr($key) . "' $selected/> $value</label>";
} ?>
<br />
<em>Enable or disable to show poster in image note. Note: If you set this option to disable, they hides also the avatar.</em>
</td>
</tr>


    Tras estos cambios, tendremos una nueva opción en el panel de administrador, para ocultar el usuario que envía la anotación. Como nota a tener en cuenta, tal como está hecho, si se oculta el usuario, también se ocultará el avatar. Nótese que esta modificación, con no excesivos conocimientos de programación, se puede extender a cualquier otra nueva opción que deseemos crear, tanto en este plugin como en cualquier otro. En la primera parte, simplemente leemos el valor de la opción que hemos creado, a la cual hemos llamado demon_image_annotation_poster. Después, en la segunda sección, primero leemos y actualizamos la opción si procede (líneas 408 y 437). Después, mostramos esta opción en el panel de Administrador del plugin para poder modificar su valor (línea 474).



  Guía de uso del plugin


    Esto lo haré en un futuro próximo.



Última actualización: 31 de Enero del 2017.