2016-07-31 9 views
0

Ich versuche, ein acf erstelltes benutzerdefiniertes Feld über die Abfrage aller Beiträge zu erhalten.Benutzerdefiniertes Feld für angemeldeten Benutzer anzeigen

versuchte ich folgendes:

<?php 
if (is_user_logged_in()): 

    global $current_user; 
    $current_user = wp_get_current_user(); 
    $author_query = array('post_status' => array('draft'), 
    'author' => $current_user->ID, 
    'meta_query'    => array(
     array(
      'key'  => 'wpgamail_options', 
      'key'  => 'ganalytics_settings', 
     ), 
    ),); 
    $author_posts = new WP_Query($author_query); 
    while($author_posts->have_posts()) : $author_posts->the_post(); 
    ?> 
    <tr> 
    <td> 
     <?php the_title(); ?> 
    </td> 
    <td> 
     <?php $post_date = get_the_date(); echo $post_date; ?> 
    </td> 
    <td> 
     <?php $field = get_field('wpgamail_options', $author_posts->the_post()->ID, true); echo $field['nextfetchtime']; ?> //here I get the error 
    </td> 
    </tr>  
    <?php   
    endwhile; 

else : 
    echo "You are not logged in. Please log in!"; 
endif; 
?> 

bekomme ich folgende Fehlermeldung:

Hinweis: Der Versuch, Eigentum von Nicht-Objekt in Unknown on line 0 Aufruf Stapel zu erhalten: 3,9772 231600 1. {main}() /home/ubuntu/workspace/index.php: 3.9774 232048 2. require ('/ home/ubuntu/arbeitsbereich/wp-blog-header.php')/home/ubuntu/workspace/index.php: 17 4.6285 8745184 3. require_once ('/ home/ubuntu/workspace/wp-includes/template-loader.php') /home/ubuntu/workspace/wp-blog-header.php:19 4.6328 8788784 4. include ('/ home/ubuntu/arbeitsbereich/wp-content/themes/twentyixteen/page-create-report.php') /home/ubuntu/workspace/wp-includes/template-loader.php:75 1469999466

Irgendwelche Vorschläge, was ich mit der [get_field()][1] Funktion falsch mache?

Ich schätze Ihre Antworten!

Antwort

1

Sie verwenden $author_posts->the_post()->ID, während Sie verwenden sollten get_the_ID() (nicht the_ID(), die ID anzeigt).
Festcode.

<?php 
$field = get_field('wpgamail_options', get_the_ID(), true); 
echo $field['nextfetchtime']; ?> 

Sie müssen auch nicht $current_user = wp_get_current_user(); tun. $current_user global enthält bereits das aktuelle Benutzerobjekt.

1

$author_posts->the_post() wird verwendet, um den Post-Index in der Schleife zu iterieren, Sie können ihn nicht verwenden, um auf den aktuellen Post zuzugreifen. Stattdessen können Sie get_the_ID verwenden:

<?php $field = get_field('wpgamail_options', get_the_ID(), true); 
     echo $field['nextfetchtime']; ?> 

Ich hoffe, das hilft.

+0

Dies ist falsch. 'the_ID()' Anzeige-ID, während sie hier zurückgegeben werden muss. Korrekte Funktion in diesem Fall ist 'get_the_ID()' –

+0

@IgorYavych nette Bemerkung danke! aber nur ein Kommentar, den du nicht hinzufügen musst, wie du ein NP-schweres Problem gelöst hast: D –