Cómo crear una función en WordPress

Las funciones dentro de WordPress son herramientas eficientes para acciones recurrentes dentro de tu sitio. Aunque son parte de los lenguajes de programación orientada a objetos, WordPress te permite mayor flexibilidad usando esta herramienta.

¿Qué es una función de WordPress?

Las funciones son un componente básico del núcleo de PHP (lenguaje de código en el que se basa WordPress). Sin embargo, esta vez solo vamos a hablar de las funciones dentro de WP.

Una función de WordPress es un modo sencillo y eficaz para acortar código. Te permite agregar una línea de código a tus marcadores en vez de muchas veces las líneas de tu función.
Viene a ser como un acceso directo a un bloque de código largo. Esto es muy conveniente cuando escribes un bloque de código muy largo que vas a usar en varias partes de tu sitio.

Normalmente las funciones se escriben dentro de functions.php de tu tema, que es donde están todas las funciones exclusivas del tema.

4 partes de una función

Podemos dividir la estructura de una función en cuatro partes para que sea fácil de digerir.
Aquí vamos:

1. Nombre de la función

En este caso la primera parte de la función es el mas fácil. Tienes que elegir un nombre para la función que, preferiblemente, describa la acción de lo que hace. Si quisiera hacer una firma para Corchoweb.com pudiera escribir una función que se llame “firma_corchoweb”, por ejemplo.

2. La estructura de la función

Todas las funciones requieren la misma estructura básica. Tienen la palabra “function” que aparece al principio, el nombre de la función, y el contenido entre llaves. Y va así:

firma_corchoweb function () {
/ / Ejemplo de contenido
}

Ya sé que eres detallista y te fijaste en los parentesis. Estos son parte de la estructura y permite que las funciones hagan magia con el código, pero su uso lo hablaremos en otro artículo. Así que pasemos al tercer tema.

3. El contenido es el rey.

Ahora tenemos un nombre la estructura de nuestra función. Pero eso sin contenido no sirve de nada. Así que vamos a agregarle un poco de contenido a nuestra firma.

firma_corchoweb function () {
     Gracias por leernos. Por favor deja tu comentario abajo!
}

Aquí puedes escribir lo que quieras. Desde una firma del autor hasta las fotos de tu perrito lo puedes usar siempre que quieras ahorrar código repetido.

4. Interrumpir el PHP con HTML

HTML y PHP son como agua y aceite, trabajan bien separados, y por eso tenemos que decirle a WordPress cuando estamos hablando de PHP y cuando de HTML. Por supuesto que eso es sumamente fácil. Lo que tenemos que hacer es cerrar el PHP escribiendo ?> para cambiar de PHP a HTML, y <?php para abrir PHP de nuevo y así cambiar de HTML a PHP. Como aquí.

<?php firma_corchoweb function () { ?>
     <p>Gracias por leernos. Por favor deja tu comentario abajo! </p>
<php }; ?>

Ahí está. Eso es una función completa de WordPress. Bastante fácil, ¿no?

Usando la Función

Ahora viene la parte fácil. Usar tu función en el tema de WordPress. Sólo tiene que escribir

<?php firma_corchoweb(); ?>

donde quieras que aparezca la firma dentro del tema.
Incluso puedes repetir la función cuantas veces lo necesites.

Eso es todo!

  • una pregunta soy nuevo en wordpress y quiero agregar esta función:

    function html5_video($atts, $content = null) {
    extract(shortcode_atts(array(
    “src” => ”,
    “width” => ”,
    “height” => ”
    ), $atts));
    return ”;
    }
    add_shortcode(‘video5’, ‘html5_video’);

    Pregunta es solo copiarla en (functions.php), erp donde al inicio al final, hay que colocar algo en php, por que si la pongo me genra un error wp y si la quito toda va bien. Gracias

    • Corcho

      Juan Manuel.
      1. El código tiene que estar dentro de functions.php entre las etiquetas de php. Como tip de organización lo puedes poner de ultimo antes del “?>”
      2. El código no está bien escrito. Le falta cerrar las comillas y eso normalmente da error. Siempre revisa que todas las líneas estén cerradas.
      3. Este código es de un gancho (hook) de wordpress que es para hacer shortcodes y es para hacer cosas parecidas.
      Puedes leer mas sobre esto aquí http://ayudawordpress.com/que-son-los-shortcodes-y-como-crearlos/

      4. Prueba con este código.
      // codigo cerrado
      function html5_video($atts, $content = null) {
      extract(shortcode_atts(array(
      “src” => “”,
      “width” => “”,
      “height” => “”
      ), $atts));
      return “”;
      }
      add_shortcode(‘video5’, ‘html5_video’);[/php]

  • Hola Corcho,
    Una pregunta, tengo un dominio comprado en wordpress al que asocié un blog .wordpress.com para que se redirija, pero no tengo hosting aún. Mi consulta es ¿Puedo acceder functions.php en mi blog? Lo he intentado y no he podido aún ¿Será que tengo que alojarlo en un hosting para poder hacerlo? Gracias.

    • Corcho

      La respuesta corta es: Si quieres editar el php de algo y/o subir un tema especial tienes que hospedarlo por tu cuenta o hacer un upgrade a un plan que te lo permita. http://store.wordpress.com/bundles/

  • Hola, amigo, y si mi funcion tiene varios argumentos, ¿cómo hago? Gracias.

    • Corcho

      De hecho la idea de las funciones es que tengan varios argumentos, pero explicame que es exactamente lo que quieres hacer para poder responderte mejor.

      Para que una función reciba argumentos normalmente los declaras en el primer corchete y luego los utilizas dentro de la función como las variables.

      Ej:

      aniversario function ($fecha, $nombre) {

      $nombre tu aniversario es el $fecha.

      }

      aniversario (’13 de Mayo’, ‘Catalina’);
      // output = Catalina tu aniversario es el 13 de Mayo.

  • pues a mi me sale que “Fatal error: Call to undefined function firma_corchoweb() in” no te tiene que poner un add_action?

    • Corcho

      Este error puede ser por que no hayas definido la función en functions.php
      ¿Copiaste y pegaste el código como está escrito?

  • hola quería hacer custom post y volcado en base datos mysql dentro de la funcion.php podrias ayudarme un poco con ello creo que casi lo tengo

    • Si escribes el código que tienes y el que quieres hacer, pues con mucho gusto.

  • Como se puede acceder a functions.php en wordpress si puede ser paso a paso. Grax

    • Corcho

      Hay dos formas via FTP y via el editor de WordPress pero en ambas el archivo está en la carpeta del tema.

      FTP: public_html/wp-content/themes/eltemaqueusas/functions.php

      WordPress: Logueate al administrador de wordpress y en el menú izquierdo buscas: Apariencia > Editor y buscas el tema que estés usando y debería listar el archivo functions.php

  • Lizeth

    Hola, por favor necesito saber si es posible cambiar las settings reading screen de wordpress desde mi aplicación. no veo nada en api wp xmlrpc que me sirva.

  • Corcho

    En cual versión de WP estas trabajando?

  • Miguel

    Buenas Corcho,

    Quería hacer una pequeña función, muy sencilla, pero necesito saber cual sería el código para que eliminara una línea de WP y la sustituyera por otra.

    Estoy haciendo un pequeño plugin personal, estoy empezando en esto y la idea es que me elimine la cadena que normalmente está en el archivo single.php y page.php y la cambie por otra que le ponga yo.

    No se si esto es posible.

    La nueva cadena sería donde pone “miblog” sería el nombre que yo recogiera en una variable en la función. No se si se podría modificar esta última linea también por ”

    Gracias por tu ayuda.

    • Miguel

      Disculpa, la cadena a eliminar sería ” y sería reemplazarla por ” tampoco sé si sería posible reemplazar “miblog” por la variable donde me recoge el nombre introducido $nombreblog

      Saludos

      • Corcho

        Si entiendo bien, quieres cambiar lo que aparece en el titulo por una variable por definir.
        Para crear una función con esa variable puedes hacer algo así:
        function.php

        < ?php neo_titulo function ($texto) { ?>
        echo $titulo;

        y luego pegas la función en donde quieras reemplazarlo así.

        single.php

        < ?php neo_titulo($texto); ?>

        Siendo el $texto tu variable.

        Te sirvió? Gracias.

        • Miguel

          Buenas Corcho, seguramente no me supe explicar bien.

          La idea es que el pequeño plugin que estoy haciendo de forma personal, sirve para insertar el modelo de comentarios de DISQUS en la web o blog.

          Lo que pasa es que al instalarlo, debo recoger el “nombre corto” que proporciona DISQUS al darte de alta en su web.

          Este código se guardaría en una variable. Hasta aquí bien.

          Pero, al activar el plugin, a parte de poner el nombre corto que nos da DISQUS, necesito que en la web o blog elimine la cadena “comments_template( ”, true );” que normalmente está en los archivos single . php y page .php de la plantilla. y lo reemplace por “disqus_embed(‘miblog’);” donde “miblog” sería la $texto – variable donde hemos puesto el nombre corto de DISQUS.

          Mil gracias.

  • Parece tal facil llamar la funcion, algo no estoy entendiendo. Porque en la HomePage donde intento llmar la funcion, me aprece como una etiqueta de texto. la funcion esta en el archivo correspondiente, si la duplico el WP me avisa que tengo un error. Ya probe con agregarla en la acción “wp-head”, y en la Homepage y siempre aparece el texto de la llamada. ;'( Alguien puede darme una idea ?