ACF Function to Display Post Type Widgets on Selected Pages

Similar to my Subnavigation Function, this will display widgets and adjust column widths if widgets are active on the page.

The “show_on_pages” custom field being used is utilizing the Relationship Field from Advanced Custom Fields.

Functions:

function has_widget(){
	
	$widgets = get_posts(array(
		    'post_type' => 'widget',
		    'meta_query' => array(
		        array(
		            'key' => 'show_on_pages', // name of custom field
		            'value' => '"' . get_the_ID() . '"',
		            'compare' => 'LIKE'
		        )
		    )
		));	
	
	if($widgets) {}
	
	return $widgets;
}


function display_widget($get_count = false) {
	
	
	echo '<div id="subwidget_container"><div class="sub_widgets">';
	
	echo '<ul>';


$widgets = get_posts(array(
    'post_type' => 'widget',
    'meta_query' => array(
        array(
            'key' => 'show_on_pages', // name of custom field
            'value' => '"' . get_the_ID() . '"',
            'compare' => 'LIKE'
        )
    )
));

if( $widgets ): 
    foreach( $widgets as $widget ): ?>
	<li>
    	<div class="widget_content">
<!-- 		    <h3><?php echo $widget->post_title; ?></h3> -->
    		<?php echo apply_filters('the_content', get_post_field('post_content', $widget->ID)); ?>
    	</div><a href="<?php echo get_permalink( $widget->ID ); ?>">
                <img src="<?php bloginfo('stylesheet_directory'); ?>/img/arrows_red.png" class="white_arrows" alt="White Arrows" />
              </a>
	</li>
    <?php endforeach;
endif;



	
echo '</ul></div></div>';
	
}

Trigger Content Width Adjustment:

<div class="entry-content <?php if(has_widget()) { echo 'with_widget'; } ?>">

Trigger Function (if active):

<?php if(has_widget()) {
	echo display_widget();
} ?>

CSS:

.entry-content.with_widget {
	width: 67%;
	float: left;
}

#subwidget_container {
	float: right;
	width: 30%;
}

Leave a Reply

katherine as a flat graphic icon

About Me

I’m an African / Ojibwe First Nations Web Developer living in Winnipeg, Manitoba.

Visit the Tips and Blog to see what I’m working on.