Support » Plugin: CMB2 » Help with custom show_on

  • Resolved jmaurer

    (@360zen)


    Hi there,
    I’m really loving CMB2 and it will most likely become a huge part of my WordPress workflow. However, I’m having trouble understanding how the custom show_on filters work.

    I have CMB2 inside a plugin like this:
    plugin_folder/
    – cmb2/
    – functionality.php

    So, let’s say I have some metaboxes in my functionality.php file, formatted like so:

    $meta_boxes['slide_fields'] = array(
    		'id'			=> 'slide_fields',
    		'title'			=> __( 'In Slider?'),
    		'object_types'	=> array('slides'),
    		'context'		=> 'side',
    		'priority'		=> 'high',
    		'show_names'	=> false,
    		'fields'		=> array(
    			array(
    				'name' => __( 'Featured Slide', 'cmb2' ),
    				'desc' => __( 'Show in slider? Only most recent 2 features will be displayed.', 'cmb2' ),
    				'id'   => $prefix . 'slider_checkbox',
    				'type' => 'checkbox',
    				)
    			),
    	);

    …and then I want them to only show on a page with slug of ‘home’. So, I grab this filter. But how do use this filter?

    Would I write something like this?
    be_metabox_show_on_slug( true, $meta_boxes[slide_fields']);

    Should this be inside of my $meta_boxes array somehow?

    I’ve spent almost an hour trying to figure this out and apparently my brain just isn’t making the connection. Any help would be much appreciated.

    https://wordpress.org/plugins/cmb2/

Viewing 6 replies - 1 through 6 (of 6 total)
  • Plugin Author Michael Beckwith

    (@tw2113)

    The BenchPresser

    At the bottom of that example section is this line: add_filter( 'cmb_show_on', 'be_metabox_show_on_slug', 10, 2 );

    Basically tacking the function declared onto the cmb_show_on filter. However, with CMB2, the filters got renamed, so you’d want to use cmb2_show_on.

    See if that helps resolve the issue and make the time not completely wasted 🙂

    Thread Starter jmaurer

    (@360zen)

    Thanks for the reply.
    I think the part I’m having trouble with is how to assign this hook to a specific set of boxes. If I only want to apply this filter to the fields inside of $meta_boxes[‘slide_fields’], do i need to add some more conditional logic to the filter somewhere?

    Plugin Author Michael Beckwith

    (@tw2113)

    The BenchPresser

    You’d want to inspect what’s coming in with the 2 parameters: $display, $meta_box

    Not sure if this is 1 metabox per pass through, or what, but if it is just one at a time, you’d need to check which metabox is currently being filtered and conditionally alter based on that.

    Plugin Author Michael Beckwith

    (@tw2113)

    The BenchPresser

    Any lingering issues with this one 360zen?

    Thread Starter jmaurer

    (@360zen)

    I think I’ve got this figured out. Thanks!

    Thread Starter jmaurer

    (@360zen)

    Oops. I’ll mark it as resolved.

Viewing 6 replies - 1 through 6 (of 6 total)
  • The topic ‘Help with custom show_on’ is closed to new replies.