Search code examples
pluginswordpresscustom-fieldsshortcode

Show post title and custom fields in sidebar with shortcode in widget - Wordpress


I would like to show certain data in the HTML/text widget with shortcodes.

I already made the include php call in my functions.php:

function event_widget($atts) {

// turn on output buffering to capture script output

ob_start();

// include file (contents will get saved in output buffer)

include("wp-content/themes/mytheme/widgets/event.php");

// save and return the content that has been output

$content = ob_get_clean();
return $content;
}
//register the Shortcode handler
add_shortcode('event', 'event_widget');

It gets the data to the widget if I put just plain text to event.php, so the call is done correctly, but I don't know how to write the event.php to get this data:

// the loop
<?php if (have_posts()) :
        while (have_posts()) : the_post(); ?>

<ul>
<li>
<?php if( get_post_meta($post->ID, "customfield1", true) ): ?>
<?php echo get_post_meta($post->ID, "customfield1", true); ?>
<?php endif; ?>
</li>

<li>
<?php if( get_post_meta($post->ID, "customfield2", true) ): ?>
<?php echo get_post_meta($post->ID, "customfield2", true); ?>
<?php endif; ?>
</li>
</ul>

Solution

  • Try this:

    global $post;
    echo get_post_meta($post->ID, "customfield1", true);
    echo get_post_meta($post->ID, "customfield2", true);
    

    If you echo a value that is false it will amount to '' (nothing) so you don't have to check if they are set.