Magic Fields cuenta con varias funciones de Front-end las cuales nos permiten mostrar de forma facil y sencilla la información de nuestros campos (Custom Fields)
La función get es una de las mas usadas y con la que podemos mostrar información de cualquier campo. la función get es la siguente:
get ($fieldName, $groupIndex=1, $fieldIndex=1, $readyForEIP=true,$post_id=NULL)
Ahora que ya sabemos todos los parametros de la función get es momento de ver algunos ejemplos.
Tenemos un campo llamado “precio”, este campo no esta en ningun grupo ni es campo duplicable, estamos trabajando dentro del loop de wordpress, para obtener el campo usariamos el siguiente código:
<?php echo get('precio'); ?>
Tenemos un campo llamado “marca” este campo se encuentra en un grupo duplicado, el campo que queremos mostrar se encuentra en el grupo 8, estamos trabajando dentro del loop de wordpress, el código para mostrar el campo es el siguiente:
<?php echo get('marca',8); ?>
Tenemos un campor llamado “horario” este campo es duplicable, nosotros queremos mostrar el campo duplicado numero 4, trabajando dentro del loop de Wordpress, el código seria seria el siguiente:
<?php echo get('horario',1,4); ?>
Tenemos un campo llamado “cancion” este es un campo duplicado y se encuentra en un grupo duplicado, el campo que queremos mostrar es el que se encuentra en el segundo grupo y el campo duplicado numero 4, queremos que no coloque los “div´s” de EIP, estamos trabajando dentro del loop de wordpress. para obtener el campo usariamos el siguiente código:
<?php // nombre del campo: cancion, indice del grupo: 2, indice del campo: 4, sin EIP echo get('cancion',2,4,0); ?>
Tenemos un campo llamdado “reseña”, este campo no se encuentra en un grupo y no es campo duplicable, pero este elemento lo vamos a mostrar en un sidebar (fuera del loop de wordpress) sabemos que el ID del post es el 24. para mostrar el campo usariamos el siguiente código:
<?php echo get('reseña',1,1,1,14); ?>
Magic Fields cuenta con un campo de tipo audio, este campo lo que hace es aceptar un archivo de audio, con la función get_audio podremos colocar un reproductor para que escuchen este audio.
La función get_audio cuenta con los siguientes parametros:
get_audio ($fieldName, $groupIndex=1, $fieldIndex=1,$post_id=NULL)
Tenemos un campo llamado “concierto” de tipo audio, este campo no se encuentra en ningun grupo y el campo no es duplicable. estamos trabajando en el loop de Wordpress, el código seria el siguiente:
<?php echo get_audio('concierto'); ?>
Tenemos un campo llamado “sonido_calle” de tipo audio este se encuentra en un grupo duplicable, el campo que queremos mostrar se encuentra en el grupo 2, estamos trabajando dentro del loop de Wordpress el código es el siguiente:
<?php echo get_audio('sonido_calle',2); ?>
Tenemos un campo llamado “sonido_ave” del tipo audio, este campo es duplicable, el campo que queremos mostrar es el campo duplicado 3, trabajando dentro del loop de Wordpress el código es el siguiente:
<?php echo get_audio('sonido_ave',1,3); ?>
Tenemos un campo llamado “backstage” este campo se encuentra en un grupo duplicable y el campo es duplicable, el elemento que queremos mostrar es esta en el grupo numero 7 y es el campo duplicado numero 6, trabajando dentro del loop de Wordpress el código es el siguiente:
<?php echo get_audio('backstage',7,6); ?>
Tenemos el mismo campo del ejemplo anterior y queremos mostrar el mismo elemento, pero ahora lo queremos mostrar en el sidebar (fuera de el loop de Wordpress) sabemos que el ID del post es el 11, para mostrar el campo el código es el siguiente:
<?php echo get_audio('backstage',7,6,11); ?>
El campo de tipo imagen es uno de los mas usados, cuando creamos un campo de tipo image tenemos la posibilidad de añadir opciones al campo: Max Height, Max Width y Custom (parametros de phpthumb) con esto logramos que la imagen tenga ciertas caracteristicas deacuerdo a nuestros parametros. este funcion regresa una la tag de HTML para imagen pero podemos hacer que solo regrese la URL del imagen con un parametro del función, este tag de HTML tendra la clase de CSS que colocamos en las opciones del campo.
La función get_image tiene el siguiente procedimiento: recibe el nombre del campo (nombre, indice del grupo y campo y otros paremetros) verifica si cuenta con parametros el campo (Max Height, Max Width y Custom) si no los tiene regresa la imagen original, si cuenta con parametros verifica si el thumbnail existe, si existe muestra este thumbnail, si no existe genera el thumbnail con los parametros y lo guarda con un nombre deacuerdo con la siguiente estructura: th_{md5 del los parametros}_{nombre de la image}.{extension del archivo}.
Con esto se logra que se genere solo una vez (la primera vez que es mostrada la imagen) el thumbnail, unicamente el thumbnail seria generado otra vez si se cambia la imagen o si los parametros cambian.
Los parametros de la función get_image son los siguiente:
<?php get_image ($fieldName, $groupIndex=1, $fieldIndex=1,$tag_img=1,$post_id=NULL,$override_params=NULL) ?>
Tenemos un campo llamdo “portada” de tipo imagen. este campo no esta en un grupo y no es campo duplicado, en las opciones del campo se colocaron opciones para phpthumb y la clase de CSS es “magicfields”. Trabajando dentro del loop de Wordpress el código es el siguiente:
<?php // esto nos regresaría la imagen con su tag de HTML echo get_image('portada'); // mostraria algo como esto: // <img src='http://magic.local/wp-content/files_mf/th_bf03ed07699f09100b6f3f35fe829808_1258154986sparta.jpg' class='magicfields' /> // ahora solo queremos que nos regrese la URL del la imagen echo get_image('portada',1,1,0); // mostraría algo como esto: http://magic.local/wp-content/files_mf/th_bf03ed07699f09100b6f3f35fe829808_1258154986sparta.jpg ?>
Tenemos el mismo campo que el ejemplo anterior pero ahora el campo se encuentra dentro de un grupo, el elemento que queremos mostrar esta en el grupo 8. Trabajando dentro del loop de Wordpress el código es el siguiente:
<?php // esto nos regresaría la imagen con su tag de HTML echo get_image('portada',8); // mostraria algo como esto: // <img src='http://magic.local/wp-content/files_mf/th_bf03ed07699f09100b6f3f35fe829808_1258154986sparta.jpg' class='magicfields' /> // ahora solo queremos que nos regrese la URL del la imagen echo get_image('portada',8,1,0); // mostraría algo como esto: http://magic.local/wp-content/files_mf/th_bf03ed07699f09100b6f3f35fe829808_1258154986sparta.jpg ?>
Tenemos el mismo campo que el ejemplo 1 pero ahora el campo es duplicado, el elemento que queremos mostrar es el duplicado numero 2. Trabajando dentro del loop de Wordpress el código es el siguiente:
<?php // esto nos regresaría la imagen con su tag de HTML echo get_image('portada',1,2); // mostraria algo como esto: // <img src='http://magic.local/wp-content/files_mf/th_bf03ed07699f09100b6f3f35fe829808_1258154986sparta.jpg' class='magicfields' /> // ahora solo queremos que nos regrese la URL del la imagen echo get_image('portada',1,2,0); // mostraría algo como esto: http://magic.local/wp-content/files_mf/th_bf03ed07699f09100b6f3f35fe829808_1258154986sparta.jpg ?>
Tenemos el mismo campo que el ejemplo 1 pero ahora el campo esta en un grupo duplicado y es un campo duplicado, el elemento que queremos mostrar se encuentra en el grupo 4 es el duplicado numero 5. Trabajando dentro del loop de Wordpress el código es el siguiente:
<?php // esto nos regresaría la imagen con su tag de HTML echo get_image('portada',4,5); // mostraria algo como esto: // <img src='http://magic.local/wp-content/files_mf/th_bf03ed07699f09100b6f3f35fe829808_1258154986sparta.jpg' class='magicfields' /> // ahora solo queremos que nos regrese la URL del la imagen echo get_image('portada',4,5,0); // mostraría algo como esto: http://magic.local/wp-content/files_mf/th_bf03ed07699f09100b6f3f35fe829808_1258154986sparta.jpg ?>
Tenemos el mismo campo que el ejemplo 1 (sin grupos y no es campo duplicado), pero queremos mostrar el campo en un sidebar (fuera del loop de Wordpress), sabemos que el ID del post es el 36, el código es el siguiente
<?php // esto nos regresaría la imagen con su tag de HTML echo get_image('portada',1,1,1,36); // mostraria algo como esto: // <img src='http://magic.local/wp-content/files_mf/th_bf03ed07699f09100b6f3f35fe829808_1258154986sparta.jpg' class='magicfields' /> // ahora solo queremos que nos regrese la URL del la imagen echo get_image('portada',1,2,0,36); // mostraría algo como esto: http://magic.local/wp-content/files_mf/th_bf03ed07699f09100b6f3f35fe829808_1258154986sparta.jpg ?>
Tenemos el mismo campo que el ejemplo 1 (sin grupos y no es campo duplicado), pero queremos que tenga distintos parametros para phpthumb, queremos que tenga un Height de 200, Width de 300 y cuente con zoom-crop de 1 y calidad de 100. trabajando dentro del loop de Wordpress el código es el siguiente:
<?php //primero mostraremos con el $override_params en forma de cadena. $nuevos="h=200&w=200&zc=1&q=100"; echo get_image('portada',1,1,1,NULL,$nuevos); // muestra algo como esto: // <img src='http://magic.local/wp-content/files_mf/th_9deb3d600c297050e13babc3493a87c0_1258154986sparta.jpg' class='magicfields' /> // ahora mostraremos con el $override_params en forma de arreglo $otros = array("h" => 200, "w" => 200, "zc" => 1, "q" =>100); echo get_image('portada',1,1,1,NULL,$otros); // y obtenemos el mismo resultado // como se vio en los ejemplos anteriores podemos elegir si queremos la tag de HTML para imagen y si queremos trabajar fuera de loop de Wordpress ?>
El campo tipo imagen cuenta con otra función de Front-end, gen_image permite crear un thumbnail con nuevos parametros o que el tag de HTML para imagen cuante con mas atributos (id, mas clases de CSS, rel, etc).
La funcion gen_image funciona de forma similar a get_image solo genera una vez el thumbnail y lo vuelve a generar solo en caso de cambiar la imagen o cambiar los parametros de phpthumb.
Los parametros de la funcion gen_image son los siguientes:
gen_image ($fieldName, $groupIndex=1, $fieldIndex=1,$param=NULL,$attr=NULL,$post_id=NULL)
Ya hemos visto visto en como hacer uso de los parametros $groupIndex ,$fieldIndex y $post_id asi que en esta función omitiremos sus ejemplos y nos concentraremos en un ejemplo donde vemos como hacer uso de los parametros $param y $attr
tenemos un campo llamado “foto” de tipo imagen en las opciones del campo se colocaron opciones para phpthumb y la clase de CSS es “magicfields”.
<?php $nuevos_phpthumb = array ("w" => 300, "h" => 200); $nuevos_atributos = array('id' => "foto_uno", "class" => "clase1 clase2", "rel" => "un rel"); // daremos nuevos valores para phpthumb echo gen_image('foto',1,1,$nuevos_phpthumb); // el resultado es: // <img src='http://magic.local/wp-content/files_mf/th_8fc97396546f1aaf80bb31701a2ac95a_1258154986sparta.jpg' class='magicfields' /> // ahora colocaremos nuevos elementos al tag de HTML, los atributos de phpthumb que toma son los que colocamos en las opciones del campo echo gen_image('foto',1,1,NULL,$nuevos_atributos); // el resultado es: // <img src='http://magic.local/wp-content/files_mf/th_bf03ed07699f09100b6f3f35fe829808_1258154986sparta.jpg' id='foto_uno' class='clase1 clase2' rel='un rel' /> // colocamos nuevos parametos para phpthumb y nuevos elementos para el tag de HTML echo gen_image('foto',1,1,$nuevos_phpthumb,$nuevos_atributos); // el resultado es: // <img src='http://magic.local/wp-content/files_mf/th_8fc97396546f1aaf80bb31701a2ac95a_1258154986sparta.jpg' id='foto_uno' class='clase1 clase2' rel='un rel' /> ?>
En proximas versiones de Magic Fields se esta considerando agregar un parametro podamos seleccionar si se quiere que regrese la tag de HTML para imagen.
Esta es una funcion que nos regresa la URL de phpthumb por si desea usarlo con otras imagenes o con get.
<?php echo PT(); // lo que mostraría el campo es algo como: // http://magic.local/wp-content/plugins/Magic-Fields/thirdparty/phpthumb/phpThumb.php ?>
Cuando creamos un campo en las opciones del campo colocamos un label, esta funcion regresa la label que se coloco para el campo.
Los parametros de la funcion get_label son los siguientes:
get_label($fieldName,$post_id=NULL)
Tenemos un campo llamado “editor” y en la label pusimos “Nombre del editor”, para mostrar la label
<?php echo get_label('editor'); // el resultado es: Nombre del editor ?>
Con el mismo campo que el ejemplo anterior, pero ahora queremos trabajar fuera del loop de Wordpress, sabiendo que el ID del post es 24, el código es el siguiente:
<?php echo get_label('editor',24); // el resultado es: Nombre del editor ?>
Esta función nos regresa el nombre del Write Panel con el cual fue hecho el post.
<?php echo get_panel_name(); ?>
Cuando tenemos campos duplicados se hace el uso de indice del campo en las funcion anteriores, con esta función podemos saber ese indice.
los parametros del la funcion son:
getFieldOrder($field_name,$group=1,$post_id=NULL)
Tenemos un campo duplicado llamado “cancion”, este campo no se encuentra en ningun grupo. para mostrar todos los campos duplicados colocamos el siguiente código:
// la funcion getFieldOrder nos regresa un arreglo con el indice del campo // el parametro para esta funcion es el nombre del campo $canciones = getFieldOrder('cancion'); foreach($canciones as $cancion){ // el primer parametro de get es el nombre del campo, el segundo es el indice del grupo, si este // campo no se encuentra en un grupo duplicable colocamos 1, el tercer parametro es el indice del campo echo get('cancion',1,$cancion)."<br />"; }
Tenemos el mismo campo que el ejemplo anterior, pero ahora el campo duplicado se encuentra en un grupo duplicado, y queremos mostrar los campos duplicados que se encuentran en el grupo 3. trabajando dentro del loop de Wordpress el código es el siguiente:
$canciones = getFieldOrder('cancion',3); foreach($canciones as $cancion){ echo get('cancion',3,$cancion)."<br />"; }
Tomando las especificaciones del ejemplo 2, ahora queremos mostrar los campos repetidos en el sidebar (fuera del loop de Wordpress) y sabiendo que el ID del post es el 12 tenemos el siguiente código:
$canciones = getFieldOrder('cancion'3,12); foreach($canciones as $cancion){ echo get('cancion',3,$cancion,1,12)."<br />"; }
Esta funcion es muy similar a getFieldOrder pero esta regresa los indices del orden de un grupo duplicado, recordemos que los grupos pueden ser ordenados (ver seccion grupos duplicados).
la función getGroupOrder cuenta con los siguientes parametros:
getGroupOrder($field_name,$post_id=NULL)
Como ya hemos visto como trabajar fuera del loop de Wordpress omotiremos ese ejemplo.
Tenemos un grupo duplicado llamado “miembro” que contiene 3 campos: nombre_miembro, puesto_miembro y foto_miembro. ahora queremos mostrar todos los campos duplicados con todos sus campos, estamos trabajando dentro del loop de Wordpress el código es el siguiente:
<?php $miembros = getGroupOrder('nombre_miembro'); foreach($miembros as $miembro){ // el segundo parametro de la funcion get y get_image es el indice del grupo a mostrar echo get('nombre_miembro',$miembro)."<br />"; echo get('puesto_miembro',$miembro)."<br />"; echo get_image('foto_miembro',$miembro)."<br /><br />"; } ?>
Esta funcion tambien sirve para campos duplicados al igual que getFieldOrder, pero get_field_duplicate nos regresa un arreglo con todos los campos duplicados (no indices).
los parametros de la función get_field_duplicate son:
get_field_duplicate($fieldName, $groupIndex=1,$post_id=NULL)
Tomando el ejemplo 1 de la función getFieldOrder, el código usando get_field_duplicate es el siguiente:
// Tenemos un campo duplicado llamado “cancion”, este campo no se encuentra en ningun grupo. $canciones = get_field_duplicate('cancion'); foreach($canciones as $cancion){ echo $cancion."<br />"; }
Tomando el ejempo 2 del la función getFieldOrder, el código usado get_field_duplicate es el siguiete:
// Tenemos el mismo campo que el ejemplo anterior, pero ahora el campo duplicado se encuentra en un grupo duplicado // y queremos mostrar los campos duplicados que se encuentran en el grupo 3. $canciones = get_field_duplicate('cancion',3); foreach($canciones as $cancion){ echo $cancion."<br />"; }
La funcion get_group regresa un arreglo con todos los campos de un grupo (puede ser duplicado o no).
los parametros de la función get_group son los siguientes:
get_group($name_group,$post_id=NULL)
La forma de usar esta funcion es:
<?php $elementos = get_group('nombre del grupo'); // podemos usar la funcion pr($elementos) o print_r($elemento) para visualisar el contenido del arreglo foreach($elementos as $elemento){ // imprimimos los campos, tambien podemos usar pr($elemento) o print_r($elemento) // para ver el contenido del grupo } // El arreglo que regresa esta funcion tiene la siguiente estructura: // [indice del grupo][nombre del campo][indice del campo] = valor // para los campos tipo imagen nivel mas en el arreglo con la letra "o" para la imagen original o "t" para thumbnail // [indice del grupo][nombre del campo][indice del campo]["o"] = URL de la imagen orginal // [indice del grupo][nombre del campo][indice del campo]["t"] = URL de la thumbnail (deacuerdo con los parametros de phpthumb en la configuración del campo) ?>
Pero que pasa si tenemos campos sin un grupo ¿podemos hacer uso de esta funcion? la respuesta es si, cuando añadimos campos sin algun campo lo que hace Magic Fields es añadirlos a un grupo, el nombre de esta campo es “__default” (son dos guiones bajos) con este nombre podemos mostrar a todos los campos que como tal no los añadimos a un grupo.
Como se ve esta funcion regresa un arreglo con todos los campos de un grupo, si en este grupo hay campos duplicados tambien nos regresara todos los campos duplicados. es importante que si no tienes claro la forma en que esta la información hagas uso de funciones como pr o print_r.