调用 PHP 函数在 index.php 中不起作用

Calling PHP function doesn't work in index.php

我在 functions.php 页面中编写了一个函数,用于在特定页面上显示图库。它显示在自定义模板上,但现在我需要它显示在 index.php 这是我的 functions.php 文件中的代码:

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;
  }

 }

该代码很有魅力。这里我称之为 min_get_page_gallery();在 awards.php 完美运行的地方:

<?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(); ?>

最后,我尝试添加 min_get_page_gallery(); 的相同函数调用;在我的 index.php 文件中是这样的:

    <?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>

有没有我遗漏的东西??

尽量描述的详细点,你的index.php有什么问题?加载 input.php 或空白页时是否有输出?

是否正确定义ABSPATH?如果没有,您的脚本会在开头退出。

为了更具体地了解脚本的流程,请尝试在那里写一些 echo

例如

<div class="row">
    <?php echo "Before calling min_get_page_gallery()" ?>
    <?php min_get_page_gallery(); ?>
    <?php echo "After calling min_get_page_gallery()" ?>
</div>

然后看一下,是否可以看到调用所需函数前后来自echo 的消息。

好的,所以我不得不做一些调整以使元显示在 functions.php 我添加了这些行: $pagemain = is_page();

然后:

 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,
            ),
        ),
    );
}