MikeL5799 MikeL5799 - 4 months ago 10
PHP Question

Calling PHP function doesn't work in index.php

I have a function I wrote in my functions.php page for a gallery to display on certain pages. It displays on custom templates, but now I need it to display on index.php Here is the code from my functions.php file:

function min_get_page_gallery( $echo = true) {
global $post;



$show_gallery = get_post_meta($post->ID, 'min_gallery-show', true);

if ( empty($show_gallery) ) {
return;
}

$gallery = get_post_meta($post->ID, 'min_image_advanced', false);

ob_start();
?>
<div class="gallery" id="gallery-<?php echo $post->ID; ?>">
<button class="gallery-move-left"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></button>
<div class="image_container clearfix">

<?php
$count = count($gallery);
$num = ceil($count / 3);
//$width_container = $num * 100;
//$width_row = 100 / $num;
//echo '<div class="gallery_inner" style="width:' . $width_container . '%;">';
echo '<div class="gallery_inner">';
for ( $i = 0; $i < $count; $i++) {
if ( $i % 3 == 0 ) {
//echo '<div class="row" style="width: ' . $width_row . '%;">';
echo '<div class="row'. (0 == $i ? ' active': ' inactive') .'">';
}
echo '<div class="col-sm-4 img_container' . (0 == $i ? ' active': ' inactive') . '">';
echo wp_get_attachment_image($gallery[$i], 'thumb-gallery');
echo '</div>';
if ( $i % 3 == 2 || ($i+1) == $count) {
echo '</div>';
}

}
echo '</div>';
?>
</div>
<button class="gallery-move-right"><i class="fa fa-arrow-circle-right" aria-hidden="true"></i></button>
</div>
<?php
$return = ob_get_contents();
ob_end_clean();

if ( $echo ) {
echo $return;
} else {
return $return;
}

}


That code works like a charm. Here is where I call it as min_get_page_gallery(); in awards.php where it works flawlessly:

<?php
/* Template Name: Awards Page Template */

get_header(); ?>

<div class="container" id="block-no-sidebar">
<h1><?php the_title(); ?></h1>
<div id="award-list">
<?php echo min_get_awards(); ?>
</div>
<div class="row">
<?php min_get_page_gallery(); ?>
</div>
<?php min_get_page_tabs(); ?>
</div>
<?php get_footer(); ?>


Now finally, I try to add the same function call of min_get_page_gallery(); in my index.php file like this:

<?php
// Silence is golden.
if ( ! defined ( 'ABSPATH' ) ) {
exit;
}
?>

<?php get_header(); ?>

<style class="take-to-head">
#block-main-content-with-sidebar { background: #ffffff; }
</style>

<div class="container" id="block-main-content-with-sidebar">
<div class="row">

<div class="col-sm-8">
<?php
if ( have_posts() ) : while ( have_posts() ) : the_post();
l('block-' . get_post_type());
endwhile; else:
l('block-none' );
endif;

?>

</div>
<div class="col-sm-4">
<?php l('block-sidebar'); ?>
</div>
</div>
<div class="row">
<?php min_get_page_gallery(); ?>
</div>
</div>




Is there something I'm missing??

Answer

Ok, so I had to do some tweaking to get the meta to show in functions.php I added these lines: $pagemain = is_page();

and then:

 if ( $pagemain == is_page( 35393 )  ) {
    $meta[] = array(
        'id'         => 'imageupload',
        'post_types' => array( 'page'),
        'context'    => 'normal',
        'priority'   => 'high',
        'title'  => __( 'Image Gallery', 'min' ),
        'fields' => array(
            array(
                'name'  => __( 'Show', 'min' ),
                'id'    => "{$prefix}_gallery-show",
                'desc'  => __( '', 'meta-box' ),
                'type'  => 'checkbox',
                'clone' => false,
            ),
            array(
                'id'               => "{$prefix}_image_advanced",
                'name'             => __( 'Image Advanced', 'min' ),
                'type'             => 'image_advanced',
                // Delete image from Media Library when remove it from post meta?
                // Note: it might affect other posts if you use same image for multiple posts
                'force_delete'     => false,
                // Maximum image uploads
                //'max_file_uploads' => 2,
            ),
        ),
    );
}