Translations of this page:

Template Functions

Magic Fields has many template functions to retrieve the custom field values.

intro_front-end.jpg

get

The popular get function allows you to access any content on any field:

get ($fieldName, $groupIndex=1, $fieldIndex=1, $readyForEIP=true,$post_id=NULL)
  • $fieldName: the name of the field you want to retrieve
  • $groupIndex: the group index which the fields belongs (duplicated groups)
  • $fieldIndex: field index (duplicated fields)
  • $readyForEIP: this parameter toggles Edit in Place for the field (only for Textbox and Multiline Textbox), when activated Magic Fields puts a div at the output of this type of fields to make editing possible watch screencast
  • $post_id: needed if you want to show the field out of the loop

Now that we know the all the parameters let's see some examples:

Example 1

We have a field named as 'price' that does not belongs to any group, cannot be duplicated and we are already in the loop. This is the code needed to retrieve the field value:

<?php echo get('price'); ?>

Example 2

Now with a 'brand' named field that belongs to a duplicated group. We want to find the field in the group 8. Again we are already in the loop:

<?php echo get('brand',8); ?>

Example 3

With a duplicable field named 'time' we want to retrieve the 4th one. Again in the loop:

<?php echo get('time',1,4); ?>

Example 4

Now we have a duplicated field “music” inside a duplicated group. To get the 4th field inside the 2nd group and get rid of the “div” created by Edit In Place we need this code:

<?php
// field name: music, group index: 2, field index: 4, no Edit In Place
echo get('music',2,4,0);
?>

Example 5

We have a single field named “excerpt” inside a single group. This time we are out of the loop and the ID of the post we want is 14:

<?php echo get('excerpt',1,1,1,14); ?>

If you'd like to reference the post/page by name instead of by ID you can use the following code:

<?php $page = get_page_by_title('Name Of The Page');
echo get('s-menu',1,1,1,$page->ID); ?>

get_audio

Magic Fields has an audio field. To show a player on your page you can use the get_audio function.

The parameters are the following:

get_audio ($fieldName, $groupIndex=1, $fieldIndex=1,$post_id=NULL)
  • $fieldName: the field name
  • $groupIndex: the group index (for duplicated groups)
  • $fieldIndex: the field index (for duplicated fields)
  • $post_id: if we need to retrieve the field outside of the loop we will need the post ID

Example 1

A single field named “concert” that is not related to any group can be accessed this way:

<?php echo get_audio('concert'); ?>

Example 2

Now we have an audio field named “music” inside a duplicable group. We want to show a player to the 1st field inside the 2nd group:

<?php echo get_audio('music',2); ?>

Example 3

With a duplicable audio field called “sound” we want to get the 3rd field. Inside the loop:

<?php echo get_audio('sound',1,3); ?>

Example 4

Now with a duplicable field “backstage” inside a duplicable group we want to get the 6th field inside the 7th group. Again in the loop:

<?php echo get_audio('backstage',7,6); ?>

Example 5

Now the same situation of the last example but outside of the loop. In this case let's say that the post ID is 11:

<?php echo get_audio('backstage',7,6,11); ?>

get_image

The image field type is one of the most frequently used fields. When creating an image field we are able to add the following options to the field: Max Height, Max Width and Custom (parameters phpthumb) By specifying these options we can get the image to have certain characteristics in accordance with the parameters we have specified. This function returns an HTML tag for the image by default. If we need to return just the URL of the image without the surrounding HTML tag information then we can do so by using a parameter of the function (noted further below). The HTML tag will include the CSS class that we have specified in the options field (in Custom, I think).

The get_image function has the following procedure: get the name of the field (name, index of the group and field and other parameters) checks if the field has parameters (Max Height, Max Width and Custom) if these parameters are not present then the original image is returned by the function. If the parameters do exist then the function verifies that the thumbnail exists. If a thumbnail does not already exist, then the function proceeds to generate one using the parameters you have specified and it saves the thumbnail with a name according to the following structure: th_{md5 of the parameters}_{name of the image}.{file extension}.

With this method the thumbnail is generated only once - the first time that the image is displayed. The thumbnail would only be generated again if the image changes or the parameters for the image are changed.

The parameters of the get_image function are as follows:

<?php get_image ($fieldName, $groupIndex=1, $fieldIndex=1,$tag_img=1,$post_id=NULL,$override_params=NULL)  ?>
  • $fieldName: the name of the field we want to display
  • $groupIndex: the index of the group that pertains to our field (duplicate groups)
  • $fieldIndex: the index of the field we want to return (duplicate fields)
  • $tag_img: this parameter tells the function if we want to return the HTML image tag [1] (default) or if we would rather return the URL only (0).
  • $post_id: if we want to show the field outside of the loop we need to provide the ID of the wordpress post or page that the field is associated with.
  • $override_params: we can use this parameter if we want to override the phpthumb parameters. Can be a string or an array.

Custom Parameters

  src = filename of source image
  new = create new image, not thumbnail of existing image.
       Requires "w" and "h" parameters set.
       [ex: &new=FF0000|75] - red background, 75% opacity
       Set to hex color string of background. Opacity is
       optional (defaults to 100% opaque).
   w = max width of output thumbnail in pixels
   h = max height of output thumbnail in pixels
  wp = max width for portrait images
  hp = max height for portrait images
  wl = max width for landscape images
  hl = max height for landscape images
  ws = max width for square images
  hs = max height for square images
   f = output image format ("jpeg", "png", or "gif")
   q = JPEG compression (1=worst, 95=best, 75=default)
  sx = left side of source rectangle (default = 0)
       (values 0 < sx < 1 represent percentage)
  sy = top side of source rectangle (default = 0)
       (values 0 < sy < 1 represent percentage)
  sw = width of source rectangle (default = fullwidth)
       (values 0 < sw < 1 represent percentage)
  sh = height of source rectangle (default = fullheight)
       (values 0 < sh < 1 represent percentage)
  zc = zoom-crop. Will auto-crop off the larger dimension
       so that the image will fill the smaller dimension
       (requires both "w" and "h", overrides "iar", "far")
       Set to "1" or "C" to zoom-crop towards the center,
       or set to "T", "B", "L", "R", "TL", "TR", "BL", "BR"
       to gravitate towards top/left/bottom/right directions
       (requies ImageMagick for values other than "C" or "1")
  bg = background hex color (default = FFFFFF)
  bc = border hex color (default = 000000)
fltr = filter system. Call as an array as follows:
       - "brit" (Brightness) [ex: &fltr[]=brit|<value]
         where <value is the amount +/- to adjust brightness
         (range -255 to 255)
         Availble in PHP5 with bundled GD only.
       - "cont" (Constrast) [ex: &fltr[]=cont|<value>]
         where <value is the amount +/- to adjust contrast
         (range -255 to 255)
         Availble in PHP5 with bundled GD only.
       - "gam" (Gamma Correction) [ex:
         &fltr[]=gam|<value>]
         where <value> can be a number >0 to 10+ (default 1.0)
         Must be >0 (zero gives no effect). There is no max,
         although beyond 10 is pretty useless. Negative
         numbers actually do something, maybe not quite the
         desired effect, but interesting nonetheless.
       - "sat" (SATuration) [ex: &fltr[]=sat|<value>]
         where <value> is a number between zero (no change)
         and -100 (complete desaturation = grayscale), or it
         can be any positive number for increased saturation.
       - "ds" (DeSaturate) [ex: &fltr[]=ds|<value>]
         is an alias for "sat" except values are inverted
         (positive values remove color, negative values boost
         saturation)
       - "gray" (Grayscale) [ex: &fltr[]=gray]
         remove all color from image, make it grayscale
       - "th" (Threshold) [ex: &fltr[]=th|<value>]
         makes image greyscale, then sets all pixels brighter
         than <value> (range 0-255) to white, and all pixels
         darker than <value> to black
       - "rcd" (Reduce Color Depth) [ex:
         &fltr[]=rcd|<c>|<d>]
         where <c> is the number of colors (2-256) you want
         in the output image, and <d> is "1" for dithering
         (deault) or "0" for no dithering
       - "clr" (Colorize) [ex:
         &fltr[]=clr|<value>|<color>]
         where <value> is a number between 0 and 100 for the
         amount of colorization, and <color> is the hex color
         to colorize to.
       - "sep" (Sepia) [ex:
         &fltr[]=sep|<value>|<color>]
         where <value> is a number between 0 and 100 for the
         amount of colorization (default=50), and <color> is
         the hex color to colorize to (default=A28065).
         Note: this behaves differently when applied by
         ImageMagick, in which case 80 is default, and lower
         values give brighter/yellower images and higher
         values give darker/bluer images
       - "usm" (UnSharpMask) [ex:
         &fltr[]=usm|<a>|<r>|<t>]
         where <a> is the amount (default = 80), <r> is the
         radius (default = 0.5), <t> is the threshold
         (default = 3).
       - "blur" (Blur) [ex: &fltr[]=blur|<radius>]
         where (0 < <radius> < 25) (default = 1)
       - "gblr" (Gaussian Blur) [ex: &fltr[]=gblr]
         Availble in PHP5 with bundled GD only.
       - "sblr" (Selective Blur) [ex: &fltr[]=gblr]
         Availble in PHP5 with bundled GD only.
       - "smth" (Smooth) [ex: &fltr[]=smth|<value>]
         where <value> is the weighting value for the matrix
         (range -10 to 10, default 6)
         Availble in PHP5 with bundled GD only.
       - "lvl" (Levels)
         [ex: &fltr[]=lvl|<channel>|<method>|<threshol>d
         where <channel> can be one of "r", "g", "b", "a" (for
         Red, Green, Blue, Alpha respectively), or "*" for all
         RGB channels (default) based on grayscale average.
         ImageMagick methods can support multiple channels
         (eg "lvl|rg|3") but internal methods cannot (they will
         use first character of channel string as channel)
         <method> can be one of:
         0=Internal RGB;
         1=Internal Grayscale;
         2=ImageMagick Contrast-Stretch (default)
         3=ImageMagick Normalize (may appear over-saturated)
         <threshold> is how much of brightest/darkest pixels
         will be clipped in percent (default = 0.1%)
         Using default parameters (&fltr[]=lvl) is similar to
         Auto Contrast in Adobe Photoshop.
       - "wb" (White Balance) [ex: &fltr[]=wb|<c>]
         where <c> is the target hex color to white balance
         on, this color is what "should be" white, or light
         gray. The filter attempts to maintain brightness so
         any gray color can theoretically be used. If <c> is
         omitted the filter guesses based on brightest pixels
         in each of RGB
         OR <c> can be the percent of white clipping used
         to calculate auto-white-balance (default = 0.1%)
         NOTE: "wb" in default settings already gives an effect
         similar to "lvl", there is usually no need to use "lvl"
         if "wb" is already used.
       - "hist" (Histogram)
         [ex: &fltr[]=hist|<b>|<c>|<w>|<h>|<a>|<o>|<x>|<y>]
         Where <b> is the color band(s) to display, from back
         to front (one or more of "rgba*" for Red Green Blue
         Alpha and Grayscale respectively);
         <c> is a semicolon-seperated list of hex colors to
         use for each graph band (defaults to FF0000, 00FF00,
         0000FF, 999999, FFFFFF respectively);
         <w> and <h> are the width and height of the overlaid
         histogram in pixels, or if <= 1 then percentage of
         source image width/height;
         <a> is the alignment (same as for "wmi" and "wmt");
         <o> is opacity from 0 (transparent) to 100 (opaque)
             (requires PHP v4.3.2, otherwise 100% opaque);
         <x> and <y> are the edge margin in pixels (or percent
             if 0 < (x|y) < 1)
       - "over" (OVERlay/underlay image) overlays an image on
         the thumbnail, or overlays the thumbnail on another
         image (to create a picture frame for example)
         [ex: &fltr[]=over|<i>|<u>|<m>|<o>]
         where <i> is the image filename; <u> is "0" (default)
         for overlay the image on top of the thumbnail or "1"
         for overlay the thumbnail on top of the image; <m> is
         the margin - can be absolute pixels, or if < 1 is a
         percentage of the thumbnail size [must be < 0.5]
         (default is 0 for overlay and 10% for underlay);
         <o> is opacity (0 = transparent, 100 = opaque)
             (requires PHP v4.3.2, otherwise 100% opaque);
         (thanks raynerape�gmail*com, shabazz3�msu*edu)
       - "wmi" (WaterMarkImage)
         [ex: &fltr[]=wmi|<f>|<a>|<o>|<x>|<y>|<r>] where
         <f> is the filename of the image to overlay;
         <a> is the alignment (one of BR, BL, TR, TL, C,
             R, L, T, B, *) where B=bottom, T=top, L=left,
             R=right, C=centre, *=tile)
             *or*
             an absolute position in pixels (from top-left
             corner of canvas to top-left corner of overlay)
             in format {xoffset}x{yoffset} (eg: "10x20")
             note: this is center position of image if <>x
             and <y> are set
         <o> is opacity from 0 (transparent) to 100 (opaque)
             (requires PHP v4.3.2, otherwise 100% opaque);
         <x> and <y> are the edge (and inter-tile) margin in
             pixels (or percent if 0 < (x|y) < 1)
             *or*
             if <a> is absolute-position format then <x> and
             <y> represent maximum width and height that the
             watermark image will be scaled to fit inside
         <r> is rotation angle of overlaid watermark
       - "wmt" (WaterMarkText)
         [ex: &fltr[]=wmt|<t>|<s>|<a>|<c>|<f>|<o>|<m>|<n>|<b>|<O>|<x>]
         where:
         <t> is the text to use as a watermark;
             URLencoded Unicode HTMLentities must be used for
               characters beyond chr(127). For example, the
               "eighth note" character (U+266A) is represented
               as "♪" and then urlencoded to "%26%239834%3B"
             Any instance of metacharacters will be replaced
             with their calculated value. Currently supported:
               ^Fb = source image filesize in bytes
               ^Fk = source image filesize in kilobytes
               ^Fm = source image filesize in megabytes
               ^X  = source image width in pixels
               ^Y  = source image height in pixels
               ^x  = thumbnail width in pixels
               ^y  = thumbnail height in pixels
               ^^  = the character ^
         <s> is the font size (1-5 for built-in font, or point
             size for TrueType fonts);
         <a> is the alignment (one of BR, BL, TR, TL, C, R, L,
             T, B, * where B=bottom, T=top, L=left, R=right,
             C=centre, *=tile);
             *or*
             an absolute position in pixels (from top-left
             corner of canvas to top-left corner of overlay)
             in format {xoffset}x{yoffset} (eg: "10x20")
         <c> is the hex color of the text;
         <f> is the filename of the TTF file (optional, if
             omitted a built-in font will be used);
         <o> is opacity from 0 (transparent) to 100 (opaque)
             (requires PHP v4.3.2, otherwise 100% opaque);
         <m> is the edge (and inter-tile) margin in percent;
         <n> is the angle
         <b> is the hex color of the background;
         <O> is background opacity from 0 (transparent) to
             100 (opaque)
             (requires PHP v4.3.2, otherwise 100% opaque);
         <x> is the direction(s) in which the background is
             extended (either "x" or "y" (or both, but both
             will obscure entire image))
             Note: works with TTF fonts only, not built-in
       - "flip" [ex: &fltr[]=flip|x   or   &fltr[]=flip|y]
         flip image on X or Y axis
       - "ric" [ex: &fltr[]=ric|<x>|<y>]
         rounds off the corners of the image (to transparent
         for PNG output), where <x> is the horizontal radius
         of the curve and <y> is the vertical radius
       - "elip" [ex: &fltr[]=elip]
         similar to rounded corners but more extreme
       - "mask" [ex: &fltr[]=mask|filename.png]
         greyscale values of mask are applied as the alpha
         channel to the main image. White is opaque, black
         is transparent.
       - "bvl" (BeVeL) [ex:
         &fltr[]=bvl|<w>|<c1>|<c2>]
         where <w> is the bevel width, <c1> is the hex color
         for the top and left shading, <c2> is the hex color
         for the bottom and right shading
       - "bord" (BORDer) [ex:
         &fltr[]=bord|<w>|<rx>|<ry>|<>c
         where <w> is the width in pixels, <rx>
	 and <ry> are
         horizontal and vertical radii for rounded corners,
         and <c> is the hex color of the border
       - "fram" (FRAMe) draws a frame, similar to "bord" but
         more configurable
         [ex: &fltr[]=fram|<w1>|<w2>|<c1>|<c2>|<c3>]
         where <w1> is the width of the main border,
	 <w2> is
         the width of each side of the bevel part, <c1> is the
         hex color of the main border, <c2> is the highlight
         bevel color, <c3> is the shadow bevel color
       - "drop" (DROP shadow)
         [ex: &fltr[]=drop|<d>|<w>|<clr>|<a>]
         where <d> is distance from image to shadow,
	 <w> is
         width of shadow fade (not yet implemented),
	 <clr> is
         the hex color of the shadow, and <a> is the angle of
         the shadow (default=225)
       - "crop" (CROP image)
         [ex:
	 &fltr[]=crop|<l>|<r>|<t>|<b>]
         where <l> is the number of pixels to crop from the left
         side of the resized image; <r>, <t>,
	 <b> are for right,
         top and bottom respectively. Where (0 < x < 1) the
         value will be used as a percentage of width/height.
         Left and top crops take precedence over right and
         bottom values. Cropping will be limited such that at
         least 1 pixel of width and height always remains.
       - "rot" (ROTate)
         [ex: &fltr[]=rot|<a>|<b>]
         where <a> is the rotation angle in degrees;
	 <b> is the
         background hex color. Similar to regular "ra" parameter
         but is applied in filter order after regular processing
         so you can rotate output of other filters.
       - "size" (reSIZE)
         [ex: &fltr[]=size|<x>|<y>|<s>]
         where <x> is the horizontal dimension in pixels,
	 <y> is
         the vertical dimension in pixels, <s> is boolean whether
         to stretch (if 1) or resize proportionately (0, default)
         <x> and <y> will be interpreted as percentage of current
         output image size if values are (0 < X < 1)
         NOTE: do NOT use this filter unless absolutely neccesary.
         It is only provided for cases where other filters need to
         have absolute positioning based on source image and the
         resultant image should be resized after other filters are
         applied. This filter is less efficient than the standard
         resizing procedures.
       - "stc" (Source Transparent Color)
         [ex: &fltr[]=stc|<c>|<n>|

Ejemplo 1

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
?>

Ejemplo 2

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
?>

Ejemplo 3

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
?>

Ejemplo 4

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
?>

Ejemplo 5

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
?>

Ejemplo 6

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
 
?>

gen_image

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)
  • $fieldName: es el nombre del nuestro campo a mostrar
  • $groupIndex: es el indice del grupo al que pertenece nuestro campo (grupos duplicados)
  • $fieldIndex: el el indice el del campo (campos duplicados).
  • $param: este parametro los podemos usar por si deseamos reescribir los parametros de phpthumb, puede ser una cadena o un arreglo.
  • $attr: este parametro es una arreglo con los nuevos atributos para la tag de HTML para la imagen (id, mas clases de CSS, rel, etc)
  • $post_id: si no nosotros queremos mostrar el campo fuera del loop de wordpress necesitamos colocar el ID del post.

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

ejemplo

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'  />
?>

Notas

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.

pt

This function generates the URL for phpThumb which you can use with other images or with magic field's get() function.

<?php
   echo PT();
   // The function returns:
   // http://magic.local/wp-content/plugins/Magic-Fields/thirdparty/phpthumb/phpThumb.php
?>

get_label

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)
  • $fieldName: nombre del campo.
  • $post_id: si trabajamos fuera del loop neceistamos colocar el ID del post.

Ejemplo 1

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
?>

Ejemplo 2

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
?>

get_panel_name

Esta función nos regresa el nombre del Write Panel con el cual fue hecho el post.

 <?php echo get_panel_name(); ?>

getFieldOrder

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)
  • $field_name: nombre del campo duplicado.
  • $group: indice que grupo en el que esta el campo.
  • $post_id: si queremos trabajar fuera del loop de Wordpress es necesario que coloquemos el ID del post.

Ejemplo 1

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 />";
  }

Ejemplo 2

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 />";
  }

Ejemplo 3

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 />";
  }

getGroupOrder

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)
  • $field_name: es el nombre del uno de los campos del campo.
  • $post_id: si estamos trabajando fuera del loop de Wordpress es necesario colocar el ID del post.

Como ya hemos visto como trabajar fuera del loop de Wordpress omotiremos ese ejemplo.

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 />";
   }
 
?>

get_field_duplicate

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)
  • $fieldName: nombre del campo duplicado.
  • $group: indice que grupo en el que esta el campo.
  • $post_id: si queremos trabajar fuera del loop de Wordpress es necesario que coloquemos el ID del post.

Ejemplo 1

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 />";
  }

Ejemplo 2

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 />";
  }

get_group

The function get_group returns an array with all of the fields in a group (it can be a duplicated, but doesn't have to be).

The parameters of the get_group function are:

get_group($name_group,$post_id=NULL)
  • $name_group: Name of the Group
  • $post_id: If we are working outside the Wordpress Loop we need to provide the Wordpress post id

The syntax of this function is:

<?php
$element = get_group('Name of the Group');
// We can use the pr($elements) or print_r($elements) functions to see the contents of the array
 
foreach($elements as $element){
   // We can print the fields using pr($element) or print_r($element) here as well
   // to see the contents of the group
  }
 
// The array that this function returns has the following structure
// [index of the group][name of the group][index of the field] = value
 
// for image fields there is one more level in the array with either the letter "o" for original image or "t" for thumbnail.
// [index of the group][name of the group][index of the field]["o"] = URL of the original image
// [index of the group][name of the group][index of the field]["t"] = URL of the thumbnail (according to the parameters of phpthumb in the configuration of the field)
 
?>

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.

Notas adicionales

front-end_functions.txt · Last modified: 2011/07/02 00:36 (external edit)