Categoria: Wordpress



How add options to your WordPress 2.7 dashboard widgets

Well, in this article, I assume you have read the WP Engineer's excellent post Add WordPress Dashboard Widgets, because his code will be our start point.

So, we have this code:

  1.  
  2.  
  3. // Load up the localization file if we're using WordPress in a different language
  4. // Place it in this plugin's folder and name it "MainFunction-[value in wp-config].mo"
  5. load_plugin_textdomain( 'MainFunction', '/wp-content/plugins/MainFunction' );
  6.  
  7. /**
  8.  * Content of Dashboard-Widget
  9.  */
  10. function MainFunction() {
  11. echo 'Test Add Dashboard-Widget';
  12. }
  13.  
  14. /**
  15.  * add Dashboard Widget via function wp_add_dashboard_widget()
  16.  */
  17. function MainFunction_Init() {
  18. wp_add_dashboard_widget( 'MainFunction', __( 'MainFunction Widget Title' ), 'MainFunction' );
  19. }
  20.  
  21. /**
  22.  * use hook, to integrate new widget
  23.  */
  24. add_action('wp_dashboard_setup', 'MainFunction_Init');
  25.  

OK, now, remenber the wp_add_dashboard_widget function?

  1. function wp_add_dashboard_widget( $widget_id, $widget_name, $callback, $control_callback = null )

The $control_callback parameter (obviously optional) is our main target. It gives the 'Configure' option to our spiffy widget.
So, we need to add a 4th parameter to wp_add_dashboard_widget:

  1. wp_add_dashboard_widget( 'MainFunction', __( 'MainFunction Widget Title' ), 'MainFunction', 'MainFunction_Setup');

The MainFunction_Setup function handles two things: the options (set the default options, recolect new values, etc) and the option's presentation (i.e. the HTML part)

So, here goes the code:

  1.  
  2.  
  3. function MainFunction_Options() {
  4. $defaults = array( 'items' => 5, 'boolean' => 1);
  5. if ( ( !$options = get_option( 'MainFunction' ) ) || !is_array($options) )
  6. $options = array();
  7. return array_merge( $defaults, $options );
  8. }
  9.  
  10. function MainFunction_Setup() {
  11.  
  12. $options = MainFunction_Options();
  13.  
  14.  
  15. if ( 'post' == strtolower($_SERVER['REQUEST_METHOD']) && isset( $_POST['widget_id'] ) && 'MainFunction' == $_POST['widget_id'] ) {
  16. foreach ( array( 'items', 'boolean' ) as $key )
  17. $options[$key] = $_POST[$key];
  18. update_option( 'MainFunction', $options );
  19. }
  20.  
  21. ?>
  22. <p>
  23. <label for="items"><PHP _e('How many items?', 'MainFunction' ); ?>
  24. <select id="items" name="items">
  25. <PHP
  26. for ( $i = 5; $i <= 20; $i = $i + 1 )
  27. echo "<option value='$i'" . ( $options['items'] == $i ? " selected='selected'" : '' ) . ">$i</option>";
  28. ?>
  29. </select>
  30. </label>
  31. </p>
  32.  
  33. <p>
  34. <label for="boolean">
  35. <input id="boolean" name="boolean" type="checkbox" value="1"<PHP if ( 1 == $options['boolean'] ) echo ' checked="checked"'; ?> />
  36. <PHP _e('Activate boolean?', 'MainFunction' ); ?>
  37. </label>
  38. </p>
  39. <PHP
  40. }
  41.  

As you can see, MainFunction_Options puts the default values (if necessary, of course) and MainFunction_Setup show the current values and let change them. You can merge this two, of course...

Now, we have to get the options and use them in our MainFunction function. Change MainFunction like that:

  1.  
  2. /**
  3.  * Content of Dashboard-Widget
  4.  */
  5. function MainFunction() {
  6.  
  7. $widget_options = MainFunction_Options();
  8.  
  9. echo 'Test Add Dashboard-Widget<br />';
  10. echo "You have selected $widget_options['items'] items<br />";
  11. echo "boolean is $widget_options['boolean']<br />";
  12.  
  13. }
  14.  

The complete code here:

  1.  
  2. <PHP
  3.  
  4. // Load up the localization file if we're using WordPress in a different language
  5. // Place it in this plugin's folder and name it "MainFunction-[value in wp-config].mo"
  6. load_plugin_textdomain( 'MainFunction', '/wp-content/plugins/MainFunction' );
  7.  
  8.  
  9. /**
  10.  * Content of Dashboard-Widget
  11.  */
  12. function MainFunction() {
  13. $widget_options = MainFunction_Options();
  14.  
  15. echo 'Test Add Dashboard-Widget<br />';
  16. echo "You have selected $widget_options['items'] items<br />";
  17. echo "boolean is $widget_options['boolean']<br />";
  18. }
  19.  
  20. /**
  21.  * add Dashboard Widget via function wp_add_dashboard_widget()
  22.  */
  23. function MainFunction_Init() {
  24. wp_add_dashboard_widget( 'MainFunction', __( 'MainFunction Widget Title' ), 'MainFunction' , 'MainFunction_Setup' );
  25. }
  26.  
  27. function MainFunction_Options() {
  28. $defaults = array( 'items' => 5, 'boolean' => 1);
  29. if ( ( !$options = get_option( 'MainFunction' ) ) || !is_array($options) )
  30. $options = array();
  31. return array_merge( $defaults, $options );
  32. }
  33.  
  34. function MainFunction_Setup() {
  35.  
  36.  
  37. $options = MainFunction_Options();
  38.  
  39.  
  40. if ( 'post' == strtolower($_SERVER['REQUEST_METHOD']) && isset( $_POST['widget_id'] ) && 'MainFunction' == $_POST['widget_id'] ) {
  41. foreach ( array( 'items', 'boolean' ) as $key )
  42. $options[$key] = $_POST[$key];
  43. update_option( 'MainFunction', $options );
  44. }
  45.  
  46. ?>
  47. <p>
  48. <label for="items"><PHP _e('How many items?', 'MainFunction' ); ?>
  49. <select id="items" name="items">
  50. <PHP
  51. for ( $i = 5; $i <= 20; $i = $i + 1 )
  52. echo "<option value='$i'" . ( $options['items'] == $i ? " selected='selected'" : '' ) . ">$i</option>";
  53. ?>
  54. </select>
  55. </label>
  56. </p>
  57.  
  58. <p>
  59. <label for="boolean">
  60. <input id="boolean" name="boolean" type="checkbox" value="1"<PHP if ( 1 == $options['boolean'] ) echo ' checked="checked"'; ?> />
  61. <PHP _e('Activate boolean?', 'MainFunction' ); ?>
  62. </label>
  63. </p>
  64. <PHP
  65. }
  66.  
  67. /**
  68.  * use hook, to integrate new widget
  69.  */
  70. add_action('wp_dashboard_setup', 'MainFunction_Init');
  71.  
  72. ?>
  73.  

You can view a PHPS version (without PHP crippled tags) here.


WordPress schwag

WordPress Schwag

Gracias a Maya, acabo de recibir mi paquetito con merchandising de WordPress.

Habrá que repartirlo por ahí. Por ejemplo, en la próxima TwittVigo :)


Numerar los comentarios en WordPress (o no)

Hablando con CrackVan de los sorteos y eso (yo haré un par de ellos enseguida, por cierto) salió a debate el tema de cual sería la mejor forma de sortear algo para que no haya después rollos raros (que la gente últimamente está muy nerviosa) y creo que hemos dado con un sistema bastante robusto:

(Nº ONCE) MOD (Nº Comentarios Post Sorteo) + 1 = Nº Comentario Ganador

Así, al basarte en un numero aleatorio externo, te evitas problemas.

Lo cual nos lleva a tener que numerar los comentarios de todos las entradas o, al menos, de las entradas que pertenezcan a una determinada categoría (Sorteos, por poner un ejemplo original).
La teoría es muy fácil (bueno, y la práctica también, la verdad). Solo hay que editar la plantilla de los comentarios de nuestro tema (normalmente comments.php) añadiendo un contador (que inicializaremos a 1 antes de entrar en el bucle de comentarios) y luego ir aumentándolo según nuestras condiciones.
Por ejemplo, yo numero todas los comentarios, pero en las entradas que pertenecen a la categoría Sorteos, los comentarios que hago yo no cuentan (para que el sistema no le asigne un número)
la cosa sería tal que así:

  1.  
  2.  
  3. if (in_category(321) && $comment->user_id != 1) { echo "#" . $nComm; $nComm++;}
  4.  

Donde 321 es el ID de la categoría Sorteos y 1 el ID de mi usuario.

Ala, otra clase magistral de vuestro amigo Coco :p


Nuevo plugin: Plurk for WordPress

Después de esperar varios días a que los de WordPress Extend me aprobasen el plugin y prepararan el repositorio y todas esas cosas (que hay que ver lo lentos que son a veces) por fin puedo anunciaros Plurk for WordPress, otro de mis cutre-plugins de la serie $foobar for WordPress que, como su propio nombre indica, simplemente muestra los últimos plurks en tu blog, bien mediante una función, bien mediante un widget. En la página del plugin están todas los posibles parámetros, las clases de CSS, etc (in english, sorry).

Si encontráis algún fallo, tenéis alguna sugerencia... ya sabéis...


WordPress Theming Advices

i18n
Always use i18n functions (like _e() and __()), even if you don't know more languages, so others can do the l10n job for you.

Templates
At least, a template for archives, author, links, search and 404 must be provided.

Alternate CSS file
In your header.php link your style.css and a alternate-style.css in order to allow users to add personal CSS code without fear to loose it in the next theme upgrade.

Supported plugins
Add support to 3rd parties plugins is good. But always check if they exists using function_exists() function to avoid PHP errors.

Time and Date format
Don't use your own time/date format with the_date() and the_time() functions. Use get_option() function, like the_date(get_option('date_format')) and the_time(get_option('time_format')) instead. And remenber, if you call the_date() function twice or more in one page, only the first will echo the date. the_time() function don't have this behavior.

Lightweight
Use WordPress own resources if is possible: i.e. don't add jquery.js, use wp_enqueue_script() function, like wp_enqueue_script('jquery'), and so on...

Widgets
Even if widgets are not your thing (like me), make your theme widget-ready. It's so easy, and sooner or later someone will ask you to do it.


Requisitos mínimos de un Blog: How To

Repito, no soy ningún experto ni nada parecido (y la ignorancia es muy atrevida)

Autor
Hacer una sección de autor no tiene mucho misterio: un email como mínimo y a partir de ahí, hasta el infinito y mas allá (redes de im, skype, nick y red de IRC, clave publica PGP, formulario de contacto, etc)

Archivo
El WordPress (y cualquier tema medio decente) viene con un archivo y una paginación decentes. Se pueden mejorar con plugins: yo recomiendo SRG Clean Archives y Pagebar2 para cada cosa, respectivamente.

Hora
Para añadir la hora a los posts, hay que ensuciarse un poco las manos y editar el tema: simplemente añadir la función the_time() donde sea conveniente (normalmente, al lado de the_date())

Colophon
Esta sección tambien es muy sencilla: Comentar con que esta creado el blog, de donde salen los gráficos, etc. Suele ser una buena sección para poner los correspondientes links de todo el material CC (si es que se usa alguna, claro). También se puede usar un plugin para mostrar que plugins se usan, como Plugins Used Plugin. Yo lo veo muy útil, pero hay quien lo ve como un problema de seguridad, ya que si usas un plugin que tenga algún bug de seguridad sabrán que lo estas usando.

Quicktags
Añadir estos botones tan útiles a los comentarios es tan fácil como usar uno de los muchos plugins (como no) que hay para eso, como LMB^Box Comment Quicktags, por ejemplo.


Requisitos mínimos de un Blog

Vaya por delante que yo no soy ningún experto en la materia ni mucho menos, pero me gustaría comentar una serie de cosas que creo que todo blog debería de tener en cuenta:

  • Autor: Es increíble lo que hay que hacer para poder contactar con el autor de un blog a veces. Una página de Acerca de, Sobre mi o lo que sea con un par de datos básicos (una dirección de email, la del jabber/messenger, etc) es más que suficiente. Si ya pones un formulario de contacto, eso es para nota...
  • Archivo: Por el amor de $DEITY, hacer el acceso a los archivos (entradas antiguas, vamos) lo más fácil posible: en la sidebar, el el footer, donde sea, pero que se vea. Imprescindible también el típico "Anterior...Siguiente" (o un plugin de paginación, ya que estamos) al FINAL de cada página, que al principio no vale para nada, que obliga a subir y bajar constantemente el scroll...
  • Hora: Igual es cosa mía, pero a mi me gusta saber, amen de la fecha, a la hora a la que se publicó una entrada. Será una tontería, pero ayuda a ubicar temporalmente el asunto. Y no cuesta nada ponerla, ¿no?
  • Colophon: Nunca está de más poner que plugins usas, o como haces esa cosa tan chula de la que estas tan orgulloso, etc. El tema es compartir tus conocimientos.
  • Quicktags: Que te comenten en tu blog mola, esta claro. Pues facilítale la tarea poniendo unas quicktags, esos botoncicos tan bonitos que hacen que poner un link, negrita o cursiva sea mucho más fácil. Tus lectores son, por defecto, unos vagos, recuérdalo :)

Y por hoy ya me he despachado a gusto, ala :p

2da Parte: Requisitos mínimos de un Blog: How To


Más Dashboards Widgets

Aparte del Dashboard: Recent Comments Extended, y con el propósito de dejar mi Dashboard como en su época pre-2.5, he creado un par más:

La verdad es que son muy simples, y dude en si liberarlos o no, pero como no hacen daño a nadie e igual le son útiles a alguien, pues ahí estan...


Dashboard Widgets

Los nuevos dashboard widgets son una gran idea que en las anteriores versiones del WordPress ya estaba implementada en forma de plugin (el magnífico myDashboard) y que ahora, a partir de la 2.5 vienen de serie. A mi me resultan muy útiles, pues desde el dashboard puedes controlar todo de un vistazo. Además, como son personalizables casi todo lo que se te ocurra se puede transformar en un dashboard widget...

Estos son lo widgets que me parecen más útiles (que no se porque no están integrados en el trunk del WordPress, la verdad)

Casi todos de Viper007Bond, desarrollador de WordPress, menuda máquina :)

Y no es un dashboard widgets, pero deberiaís tener instalado el Dashboard Widget Manager si o si: te permite organizar todos los dashboards widgets (ordenarlos, desactivarlos, etc...)

Non-Widget Bonus:

  • Admin Drop Down Menu, convierte la barra de menus en una lista desplegable. Otra maravilla que debería venir de serie en el WordPress.
  • Remove Max Width, para eliminar el max-width de la zona de administración (si tienes un panorámico lo agradecerás)
  • Global Plugin Update Notice, y evita tener que ir mirando plugin por plugin si hay actualizaciones...

WordPress 2.5

Ya tenemos la versión 2.5 del WordPress instalada. Todo ha ido como la seda, salvo el plugin de los favatares, pero ya lo revisaré despues.
Tiene cositas interesantes, a ver si me entero de como crear widgets para el dashboard...

Mañana haré más I+D+I... ;)


Pages: 1 2 3 »

Oportunidades

Al iniciarse en la fotografía a un nivel más profesional es recomendable comprar equipo de segunda mano, hasta que uno está seguro de elegir la cámara que más le conviene. Son muchas las páginas donde se puede comprar cámaras de segunda mano, por ejemplo Mundoanuncio.com...

Archivos

Últimos Comentarios

  1. G
  2. G

    I'd been indicated this excellent website by using this uncle. I am not saying favourable if this send is definitely authored as a result of him since no one recognize these kinds

    venta de pantallas para publicidad @ How add options to your WordPress 2.7…
  3. G

    Buenos dias great article!

    Emily @ Londres: buscar trabajo
  4. G
  5. G

    Me encanta vuestros blog, lo recomendare a todos mis seguidores, un saludo.

    sillas de paseo @ Copenhaguen en un fin de semana