如何将一个变量从functions.php传递到WordPress中的模板文件?

时间:2017-09-27 06:01:18

标签: php wordpress

我无法访问模板文件中的变量(请参阅下面的评论)。 提前感谢您的帮助。

的functions.php:

$mypage = (get_query_var('paged')) ? get_query_var('paged') : 1;
$maxpost = $loop->max_num_pages;

的template.php:

$args = array(
          'post_type' => 'publications',
          'posts_per_page' => 2,
      );

    $query = new WP_Query( $args ); ?>

    <?php if ($query->have_posts()) : ?>
      <div id="posts">
        <?php while ($query->have_posts()) : $query->the_post(); ?>
          <section class="col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2  publications-section tagged-posts post">
            <?php if ( has_post_thumbnail() ) : ?>
            <a href="<?php echo get_permalink( $post->ID ); ?>">
              <div class="col-sm-4 col-sm-push-8 publications-section-image" style="background-image:url('<?php the_post_thumbnail_url(); ?>');"></div>
            </a>
            <?php endif; ?>
            <div class="col-sm-8 col-sm-pull-4">
             <h2><a href="<?php echo get_permalink( $post->ID ); ?>"><?php the_title(); ?></a></h2>
             <p><?php the_excerpt(); ?></p>
             <small><?php echo get_post_meta($post->ID, "_contact", true); ?></small>
             <small class="pub-tags pub"> <span><?php the_terms( $post->ID,'mytag','',' '); ?></span></small>
           </div>
          </section>
        <?php echo $mypage; endwhile; wp_reset_postdata();  ?>
      </div>

      <div class="col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2" id="pub-btn-section">
        <input type="submit" class="btn" id="loadmore" name="" value="Submit">
      </div>
    <?php endif;  ?>

2 个答案:

答案 0 :(得分:0)

我们假设您使用get_template_part()函数在function.php文件中包含模板。

现在传递一些值,您可以使用get_template_part()

上方的set_query_var()函数
  

functions.php代码

$mypage = (get_query_var('paged')) ? get_query_var('paged') : 1;
$mymax = $loop->max_num_pages;
set_query_var( 'mypage', absint( $mypage ) );
set_query_var( 'mymax', absint( $mymax) );
get_template_part(  'The slug name for the generic template', $name = null  );
  

template.php文件中,我们需要直接访问$mypagemymax变量

echo $mypage;
echo $mymax;

答案 1 :(得分:0)

  1. 您需要首先在所有函数之外的functions.php中声明您的全局变量,然后执行而不使用全局关键字。

  2. 当你想要引用全局变量时,当它超出范围时(例如在函数中,在另一个文件中),当你使用{{1}时} keyword。

  3. <强>的functions.php

    global

    现在你应该可以在template.php中访问它了,具体取决于你使用的是什么钩子(只要该钩子没有被过早调用。

    注意:

    强烈建议不要使用全局变量,因此请考虑为什么要这样做?可能会更改代码的逻辑,或者使用自定义函数吗?

    另一种选择是使用// declare your global variables $mypage = 0; $mymax = 0; function myfunction(){ global $mypage,$mymax; // reference your global variables $mypage = (get_query_var('paged')) ? get_query_var('paged') : 1; $mymax = $loop->max_num_pages; } get_query_var() - 尽管这些选项用于传递参数而不是查询字符串。

    <强> 的functions.php

    set_query_var()

    template.php

    $mypage = (get_query_var('paged')) ? get_query_var('paged') : 1;
    set_query_var("mypage", $mypage );    // set your variable
    

    同样,这些取决于您正在使用的钩子的操作顺序中的位置。

    更新

    如果您的分页变量位于包含 template_part 的函数中,那么在设置它们之后您将使用$mypage = get_query_var("mypage"); // get the variable 将它们传递给该文件。