Ojo: Notas sueltas, no es un manual. Basado en el Plugin Club y otros plugins que he ido desarrolando.
Índice de contenidos
Funciones varias
register_activation_hook(__FILE__, ‘club_activate’ )
Define que función se debe llamar cuando se activa el Plugin
add_filter(‘the_content’, ‘club_competitions’)
Añade un filtro en el contenido de un Post o una página, cuando se cargue el post se llamará a esta función: club_competitions(). Dentro de esta función debemos evaluar si nos está llegando un parámetro de carga especial de contenidos, por ejemplo para ver una lsita de competiciones pediremos al usuario que ponga en su Post o Página: [competitions].
Parece ser que sólo funciona un add_filter por Plugin, al poner 2 sólo entra en el primero.
dbDelta($sql);
Cuando se hace un SQL múltiple con $wpdb->query($sql) no funciona con dbDelta($sql) si
Errores
1) Un error difícil de encontrar:
En club-admin.php se definen los submenu_page y los archivos relacionados con cada submenu.
Si en uno de los archivos como puede ser club-players.php utilizamos como variable global $action en vez de definir una específica como $action_players entonces aparentemente WordPress funciona pero al intentar modificar una entrada o página no funciona, y tampoco publica.
2) Hay dos add_filter, las funciones están en el mismo fichero club-page.php. Si ponemos los dos Tags […] en la misma entrada o página entonces sólo se ejecuta el primero.
Campos de formulario con el editor de texto de WordPress
Desarrollando un plugin es frecuente que tengamos que incluir en los formularios un campo de texto largo para observaciones, descripciones, etc. que pueda incluir enlaces e imágenes como en la caja del texto de contenido de una entrada o página. Normalmente se usa un <textarea> pero eso no permite el texto enriquecido.
Para añadir la caja de WordPress se puede conseguir de una manera muy sencilla usando la función de WordPress wp_editor().
Ejemplo:
[php]
echo ‘<form method="post" enctype="multipart/form-data">’;
echo ‘Texto: <input type="text" name="txt" size="50" value="valor del texto (opcional)">’;
echo ‘<input type="hidden" name="op" value="update">’;
echo "Descripton:";
wp_editor("valor de la descripción (opcional), "description");
echo ‘<input type="submit" value="Update">’;
[/php]
Saltos de línea con wp_editor
Un problema que me encontré es que en el editor veía bien los saltos de línea pero al visualizar los datos no se veían esos saltos de página. Hice una entrada con el mismo contenido y comparé los dos campos, el Content de wp_posts con el mío, eran iguales.
Finalmente encontré la solución en un página de Internet, la apliqué añadiendo el código al fichero raíz de mi plugin y funcionó, este es el código:
[php]
function customizeEditor($in) {
$in[‘remove_linebreaks’]=false;
$in[‘remove_redundant_brs’] = false;
$in[‘wpautop’]=false;
return $in;
}
add_filter(‘tiny_mce_before_init’, ‘customizeEditor’);
[/php]
Notas
- Se debe destacar que wp_editor() no debe estar dentro de un echo, es desconfigura el formulario. Se ha de llamar de forma directa.
- La lectura del valor en la función correspondiente se hará mediante $_REQUEST[‘description’]). Devuelve el HTML del contenido creado.
- El campo se debe guardar en un tipo LONGTEXT como el caso del campo Content en wp_posts.