Short answer: no.
Shortcodes are for injecting content directly in the Post Content, by the user, via the Post Edit screen.
If your data are coming from a metabox, you have other, better, more efficient, and easier-to-control means of injecting content into the Post Content: primarily, the the_content
filter (for general usage), or custom action hooks (for Themes that provide them).
Using the the_content
filter to add your code is simple:
function my_plugin_filter_the_content( $content ) {
// Get post custom meta
$values = get_post_custom( $post->ID );
// Determine if shortcode meta is set
$my_custom_content = isset( $values['meta_box_button_shortcode'] ) ? esc_attr( $values['meta_box_button_shortcode'][0] ) : '';
// Tell WordPress to execute the shortcode
$custom_shortcode_output = do_shortcode( $my_custom_content );
// Append the executed shortcode to $content
$content .= $custom_shortcode_output;
// Return modified $content
return $content;
}
add_filter( 'the_content', 'my_plugin_filter_the_content' );
No need for a shortcode.
Also, using a filter, you don’t have to worry about your shortcode being left orphaned if the user deactivates your Plugin.
Note that, if you need to output a specific shortcode, you can use do_shortcode( '[shortcode_name att="value"]' )