2017-09-27 1 views
0

Ich kann nicht auf meine Variablen innerhalb meiner Vorlagendatei zugreifen (siehe Kommentar unten). danke im voraus für die Hilfe.Wie kann ich eine Variable von functions.php an die Vorlagendatei in WordPress übergeben?

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

zeigen Sie den vollständigen Code von functions.php an, welchen Hook verwenden Sie für den Code von functions.php. –

Antwort

0

nehmen wir an, dass Ihr die get_template_part() Funktion verwendet werden Vorlage in function.php Datei aufzunehmen.

jetzt einen Wert mit diesem passieren Sie die set_query_var() Funktion über dem get_template_part() verwendet wird, kann

functions.php Code

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

In template.php Datei müssen wir Zugriff auf die $mypage und mymax Variable direkt

echo $mypage; 
echo $mymax; 
0
  1. Sie müssen erklären, um Ihre globale Variable in functions.php außerhalb von irgendwelchen Funktionen zuerst, und Sie tun, um diese ohne das globale Schlüsselwort.

  2. Wenn Sie die globale Variable zu Referenz wollen, wenn seine außerhalb des Gültigkeitsbereichs (zum Beispiel in einer Funktion, in einer anderen Datei), das ist, wenn Sie das global Schlüsselwort verwendet.

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

Jetzt sollten Sie in der Lage sein, darauf zuzugreifen in template.php, je nachdem, welche Haken Sie verwenden (solange der Haken nicht genannt zu früh

. HINWEIS:

Die Verwendung von globalen Variablen wird dringend abgeraten, so Co nsider, warum machst du es so ... könnte die Logik deines Codes geändert werden oder stattdessen eine benutzerdefinierte Funktion verwendet werden ??

Eine andere Option ist die Verwendung von get_query_var() und set_query_var() - obwohl diese für die Übergabe von Parametern anstelle von Querystring vorgesehen sind.

Funktionen. 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 

Auch diese davon abhängen, wo in der Folge von Aktionen der Haken Sie verwenden ist.

aktualisieren:

Wenn Ihre Paging-Variablen in einer Funktion, die ein template_part, in diesem Fall enthalten Sie include(locate_template('your-template-part.php')); nach dem Setzen sie sie in diese Datei zu übergeben verwenden würden.

+0

Variable wird nicht in der Vorlagendatei aktualisiert, es wird nur 0 – jordan

+0

@jordan angezeigt. Sie können Ihre Frage mit dem Code aktualisieren, den Sie gerade verwenden, einschließlich der Aktion & Funktion, in der Sie die Werte für $ mypage & $ mymax festlegen möchten – FluffyKitten

+0

Ich habe meinen Code aktualisiert! – jordan

Verwandte Themen