2016-07-29 9 views
0

Wir haben ACF Pro für WP und wir haben eine ACF erstellt, die eine Position, die eine Auswahl ist.Abfrage erweiterte benutzerdefinierte Feld nicht angezeigt

Wenn die Ausgabe versuchen wir bekommen dies:

Hinweis: Der Versuch, Eigentum von Nicht-Objekt zu erhalten in /home/cwplantactiveint/public_html/wp-content/themes/cwplant/Loop-Arbeitsplätze. php on line 66

welche dieser

<?php $location = get_field('job_location'); echo $location->post_title; ?> 

Nun seltsam ist, es gibt eine andere benutzerdefinierte Feld die das Datum war createdto Ausgabe:

<?php if(get_field('closing_date')) { ?> 
<?php the_field('closing_date'); ?> 
<?php } else { ?> 
Ongoing 
<?php } ?> 

Der gesamte Code-Block wie folgt aussieht:

<?php while (have_posts()) : the_post(); ?> 

<?php /* Check closing date is not past. */ 


$today = strtotime("now"); 
$closedate = strtotime(get_field('closing_date')); 


if ($today < $closedate || !get_field('closing_date')) { 

?> 

<div class="singlepost infobox info-job content cfix"> 
     <h2><a href="<?php the_permalink(); ?>" title="<?php printf(esc_attr__('Permalink to %s', 'twentyten'), the_title_attribute('echo=0')); ?>"><?php the_title(); ?></a></h2> 
     <p><span class="red first">Location:</span> <?php $location = get_field('job_location'); echo $location->post_title; ?> 


     <span class="red">Closing Date:</span> 

     <?php if(get_field('closing_date')) { ?> 
    <?php the_field('closing_date'); ?> 
    <?php } else { ?> 
    Ongoing 
    <?php } ?> 

      </p> 

    <?php if (is_archive() || is_search() || is_home()) : // Only display excerpts for archives and search. ?> 
      <?php the_excerpt(); ?> 
      <a class="button" href="<?php the_permalink(); ?>">View Details</a> 
    <?php else : ?> 
      <?php the_content(__('Continue reading &rarr;', 'twentyten')); ?> 
    <?php endif; ?> 



</div> 

<?php $jobstrue = 'true'; ?> 

    <?php } else { ?> 
    <?php $jobsfalse = 'true'; ?> 
    <?php } ?> 

<?php endwhile; // End the loop. Whew. ?> 
+0

Hinweis: '$ closedate = strtotime (Get_Field ('closing_date'));' - 'Get_Field 'wird ein' true' oder 'false' zurückgeben, sollte es' the_field ('closing_date') 'sein - ähnlich wie für '$ location', sollten Sie es als' if ($ location) {do_something} ' –

+0

setzen Archivvorlage oder eine normale? – staypuftman

+0

@staypuftman Dies ist eine neue Standardseitenvorlage. – PhpDude

Antwort

1

Ich denke, Ihr Problem ist, dass Sie nicht das $post Objekt mit wp_reset_postdata() zurückgesetzt haben, damit Ihre Abfrage Rückkehr wird die letzte Sache in $post (wahrscheinlich createdto in Ihrem Fall).

Jedes Mal, wenn ich jedes Objekt in WP behandeln, habe ich es immer auf und es dann zurückgesetzt wie folgt aus:

<?php 
// YOUR CUSTOM FIELD 
// 0- Reset post object from last query (this should really be part of your last query) 
wp_reset_postdata(); 

// 1- Put custom field into post object and check for content 
$post_object = get_field('location'); 

// 2- Check to make sure object exists and setup $post (must use $post variable name) 
if ($post_object) { 
    $post = $post_object; 
    setup_postdata($post); 

    // 3- Do some magic 
    echo get_field('closing_date'); 

    // 4- reset postdata so other parts of the page can use it 
    wp_reset_postdata(); 
} 
?> 
Verwandte Themen