Tag Archives: PHP

WordPress Protect Content shortcode

The simplest way to hide content from logged out users by wrapping content in [protect] hide me [/protect]

/*************
PROTECT SHORTCODE - If user is not logged in, content within [protect] is replaced with a predefined string.
*****************/

add_action( 'init', 'dm2_register_protect_shortcode');

function dm2_register_protect_shortcode() {
   add_shortcode('protect', 'dm2_protect_function');
}

function dm2_protect_function($atts, $content = null) {

     if ( is_user_logged_in() ) {
          $return_string = $content;
     } else {
          $return_string = 'You must be logged in to view this content';
     }

     wp_reset_query();
     return $return_string;
}

Categories images plugin modified to save image ID

I very quickly (and badly) hacked up Zahlan’s excellent Categories Images plugin to save image IDs rather than the absolute URL to the image file. This means we can use WordPress’ image resizing as well as its other image meta tools.

Download the categories-images plugin (zip)

Update (10 Oct 12): The first upload had a bit of code left in from my own use of the plugin that limited it to a certain taxonomy. I’ve removed it now so the plugin works on all taxonomies as it should.

The key points are:

  • z_edit_taxonomy_field() and z_add_taxonomy_field()  are modified to have a separate button to upload the image rather than clicking the text box. It means the user can manually type the ID if they wish.
  • z_script() grabs the image ID from thickbox instead of the URL. Because thickbox returns an img tag with the image, the only way to get the ID is to chop it out of the class.
  • z_save_taxonomy_image() validates the image ID before saving in case the user types an ID in the text box.

Add menu li class of item’s name in WordPress

This adds a class of the item’s name to each list item in a nav menu in WordPress. So, if the page item is called ‘About us’, the li gets an extra class of ‘menu-item-about-us’. Handy for styling.

add_filter('nav_menu_css_class' , 'ed_page_title_class' , 10 , 2);
function ed_page_title_class($classes, $item){
  $classes[] = sanitize_title('menu-item-' . $item->title);
  return $classes;
}