A little function for oEmbed + ACF

We’ve been doing a lot of videos on our sites lately. Well, we’ve always done a lot of videos on our sites. The model is usually an on-page embed, either directly in page or via a modal, and we set the back-end up to use the oEmbed field in Advanced Custom Fields Pro. It gives a great back-end experience – and why use WordPress if it’s not going to be user configurable, right?

Anyway, in almost every case we need to disable the display of related videos. The problem has already been solved, but I’m doing this often enough that I wrote this simple, but handy little function to take care of it. Configure the parameters in the function itself, and just pass it your field name. Outputs the URL and everything in the $params array gets passed in on the tail end as a query string.


/**
 * oEmbed Attributes
 *
 * Add parameters to oEmbed query string. Useful for
 * turning off related videos and such.
 *
 * Basic field use: $video = videoLink('your_field_name');
 * Add second param if in a repeater: $video - videoLink('your_subfield_name', true);
 *
 * @see https://www.advancedcustomfields.com/resources/oembed/
 *
 * @param $field
 * @param bool $repeater defaults to false / true if repeater
 * @return mixed  embed HTML
 */
function videoLink($field, $repeater = false) {

  global $post;

  // get current post ID
  $id = $post->ID;

  if(!$repeater) {
    // get the field
    $videoFrame  = get_field( $field, $id );
  } else {
    // if we are in a repeater
    $videoFrame  = get_sub_field( $field, $id );
  }

  // use preg_match to find iframe src
  preg_match('/src="(.+?)"/', $videoFrame, $matches);
  $src = $matches[1];

  // add extra params to iframe src
  $params = array(
    'rel'    => 0
  );

  $new_src = add_query_arg($params, $src);
  $videoLink = str_replace($src, $new_src, $videoFrame);

  return $videoLink;

}

To use it somewhere just pass it your field name. So, if your ACF field is my_video:


echo videoLink('my_video');

If you’re rolling with a repeater, just set the second parameter to true.


echo videoLink('my_video', true);

GitHub Gist

Read Post

Function for Post Format Icons


/**
 * Output Post Format icons
 * 
 * Outputs an icon for each post format. Set up to use Fontawesome,
 * but can be used with anything, or you can just use CSS.
 *
 * @return string
 */
function post_format_icon() {
  global $post;
  // get current post ID
  $id     = $post->ID;
  // get post format
  $format = get_post_format( $id );
  // array of icons as $format => $icon key/value pairs
  $icons = [
    'standard' => 'fa-pencil',
    'aside'    => 'fa-sticky-note',
    'chat'     => 'fa-comments',
    'gallery'  => 'fa-picture-o',
    'link'     => 'fa-external-link',
    'image'    => 'fa-camera',
    'quote'    => 'fa-quote-left',
    'status'   => 'fa-commenting',
    'video'    => 'fa-video-camera'
  ];
  // format will return false if no format is set. So, evaluate against this..
  // if format = false then $icon = standard, else icon = selected format
  $format == ( false ) ? $icon = $icons['standard'] : $icon = $icons[ $format ];
  
  // string to be output
  // echo a full line of html or just drop the output in as a class
  $output = $icon;
  // return the output
  return $output;
}

Github Gist

Read Post