[wp-hackers] Is there a way to get the callback function name out of a shortcode _programmatically_?

Haluk Karamete halukkaramete at gmail.com
Tue Nov 12 23:37:31 UTC 2013


Sorry guys to bother you back on this.... In a slightly more complicated
case ( a visual composer shortcode ) where the shortcode data is stored in
an object in the $shortcode_tags array, I'm hitting a brick wall.

The shortcode I'm after is "vc_wp_posts" and I use this one liner to
ATTEMPT to get it   $callback = get_shortcode_callback("vc_wp_posts");

using the function we had yesterday.

function get_shortcode_callback( $shortcode ) {
    return isset( $GLOBALS['shortcode_tags'][ $shortcode ] ) ?
$GLOBALS['shortcode_tags'][ $shortcode ] : false;
}

and it comes back with a FALSE.

I know why but I don't know how to get to piece I need to...

Here is the $shortcode_tags var dump view

shortened for brewity

array (size=74)
  'embed' => string '__return_false' (length=14)
  'wp_caption' => string 'img_caption_shortcode' (length=21)
  'caption' => string 'img_caption_shortcode' (length=21)
  'gallery' => string 'gallery_shortcode' (length=17)
  'audio' => string 'wp_audio_shortcode' (length=18)
  'video' => string 'wp_video_shortcode' (length=18)
  'vc_column_inner' =>
    array (size=2)
      0 =>
        object(WPBakeryShortCode_VC_Column_Inner)[173]
          protected 'predefined_atts' =>
            array (size=3)
              ...
          protected 'shortcode' => string 'vc_column_inner' (length=15)
          protected 'html_template' => null
          protected 'atts' => null
          protected 'settings' =>
            array (size=11)
              ...
          protected 'is_plugin' => boolean true
          protected 'is_theme' => boolean false
      1 => string 'output' (length=6)
  'vc_row' =>
    array (size=2)
      0 =>
        object(WPBakeryShortCode_VC_Row)[174]

etc...

now I am gonna fast forward to the section that deals with the shortcode
I'm after...

and here it is...

'vc_wp_posts' =>
    array (size=2)
      0 =>
        object(WPBakeryShortCode_VC_Wp_Posts)[118]
          protected 'shortcode' => string 'vc_wp_posts' (length=11)
 <------------ this is where the information we are after.
          protected 'html_template' => null
          protected 'atts' => null
          protected 'settings' =>
            array (size=6)
              ...
          protected 'is_plugin' => boolean true
          protected 'is_theme' => boolean false
      1 => string 'output' (length=6)

  'vc_wp_links' =>
    array (size=2)
      0 =>












On Tue, Nov 12, 2013 at 5:28 AM, J.D. Grimes <jdg at codesymphony.co> wrote:

> Yeah, I thought it would reduce bootstrap. Using do_shortcode() is so easy
> for new devs to do, if we want them to use the better alternative, I think
> it would be adopted quicker in a wrapper like this.
>
> On Nov 11, 2013, at 10:02 PM, Ryan McCue <lists at rotorised.com> wrote:
>
> > J.D. Grimes wrote:
> >> Here is a function that does just that:
> >
> > This seems like something we should bring in to core to avoid everyone
> > using `do_shortcode` and running the full regex parser every time.
> >
> > I see you proposed http://core.trac.wordpress.org/ticket/25435 but it
> > got wontfix'd. Anyone else think we should reopen?
> >
> > --
> > Ryan McCue
> > <http://ryanmccue.info/>
> > _______________________________________________
> > wp-hackers mailing list
> > wp-hackers at lists.automattic.com
> > http://lists.automattic.com/mailman/listinfo/wp-hackers
>
> _______________________________________________
> wp-hackers mailing list
> wp-hackers at lists.automattic.com
> http://lists.automattic.com/mailman/listinfo/wp-hackers
>


More information about the wp-hackers mailing list