2017-09-27 4 views
0

テンプレートファイル内の変数にアクセスできません(下記のコメントを参照)。 ご協力いただきありがとうございます。functions.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; ?> 
+1

は、functions.phpのコードの完全なコードを示しています。 –

答えて

0

はのは、あなたがfunction.phpファイルにテンプレートを含めるget_template_part()機能を使用しているものとします。今

あなたはtemplate.phpファイルでget_template_part()

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

set_query_var()機能を使用することができますこれでいくつかの値を渡し、我々はアクセスする必要が$mypagemymax直接変数

echo $mypage; 
echo $mymax; 
0
  1. は、最初に、すべての機能の外のfunctions.phpにあなたのグローバル変数を宣言する必要があり、あなたはグローバルキーワードを指定せずにこのを行います。

  2. 範囲のそのうちには(例えば関数の中で、別のファイルで)、それはあなたがglobalキーワードを使用したときだとき、あなたは参照グローバル変数にしたい

のfunctions.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; 
} 

今、あなたがいる限り、そのフックが呼び出されないよう(あなたが使用しているフックに応じて、template.phpでそれにアクセスすることができるはずです早すぎる

注:

グローバル変数の使用が強く推奨されているので、コなぜこのようにしているのですか...あなたのコードのロジックを変更したり、カスタム関数を代わりに使うことができますか?

もう1つの方法は、get_query_var()set_query_var()ですが、これらはクエリ文字列ではなくパラメータを渡すためのものです。

機能。PHP

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

template.php

$mypage = get_query_var("mypage"); // get the variable 

再度、これらは一連のアクションで使用しているフックがどこにあるかによって異なります。

更新

ページング変数は、その場合には、あなたがそのファイルに渡すためにそれらを設定した後include(locate_template('your-template-part.php'));を使用することになりtemplate_partを含む関数である場合。

+0

変数がテンプレートファイル内で更新されない、0と書かれているだけです – jordan

+0

@jordan $ mypage&$ mymaxの値を設定しようとしているアクションと関数を含め、今使っているコードで質問を更新できますか? – FluffyKitten

+0

私のコードを更新しました! – jordan

関連する問題