2016-08-08 10 views
0

Ich hoffe, Sie können mir helfen, herauszufinden, warum ich get_first_post_in_category nicht erfolgreich eine nutzbare Beitrags-ID zurückgeben kann. Im Moment verwende ich die Wordpress Plugin Boilerplate, um ein Plugin zu erstellen, das den ersten Post einer bestimmten Kategorie (über die Admin-Optionen-Seite) aus der primären Schleife entfernt. Alles ist gut, bis ich versuche, die Post-ID programmatisch abzurufen.WordPress Custom Function in Plugin zur Rücksendung Beitrags-ID aus der angegebenen Kategorie

Hier habe ich meine Haken definieren (funktioniert):

// In private function define_public_hooks() 
$this->loader->add_action('pre_get_posts', $plugin_public, 'exclude_featured_post_pre_injection'); 

Hier ist die Callback-Funktion ich eine bestimmte Stelle aus der Hauptabfrage auszuschließen verwende. Wenn $ first_post_in_category_id manuell festgelegt wird, funktioniert es einwandfrei. Wenn ich versuche, es auf "= get_first_post_in_category();" Ich bekomme einen 500 Fehler.

public function exclude_featured_post_pre_injection($query){ 

    // Doesn't work 
    $first_post_in_category_id = $this->get_first_post_in_category(); 

    //Works 
    // $first_post_in_category_id = '427'; 

    if ($query->is_home() && $query->is_main_query()) { 
     $query->set('post__not_in', array($first_post_in_category_id)); 
    } 
} 

Und hier ist das Problem ::: diese Funktion, die ich versucht bin, nur die ID des ersten Beitrags in der Kategorie zurückzukehren in anderen Aktion/Filter-Rückrufen verwendet werden. Wenn ich das anrufe, gibt es einen Fehler von 500 zurück.

public function get_first_post_in_category(){ 

    $cat_id = get_option('sticky_content_category_id'); 
    // currently returns (string) '3' which has posts in it 

    $args = array(
     'posts_per_page' => 1, 
     'cat' => $cat_id 
    ); 

    $latest_cat_post = new WP_Query($args); 

    while ($latest_cat_post->have_posts()) : $latest_cat_post->the_post(); 

    $first_post_id = the_ID(); 

    endwhile; 
    wp_reset_postdata(); 

    return $first_post_id; 
} 

Irgendeine Idee auf dem besten Weg, um die Probleme zu lösen, in denen ich laufe?

Antwort

0

Ich kann nicht sehen, wie es einen Fehler 500 verursachen kann, aber der Code unten funktioniert für mich.

$category_id = get_cat_ID('Wordpress'); 

//echo $category_id; 

$args = array(
    'posts_per_page' => 1, 
    'cat' => $category_id, 
    'orderby' => 'ID', 
    'order' => 'DESC' 
); 

$query = new WP_Query($args); 

while($query->have_posts()):$query->the_post(); 
    echo the_ID(); 
endwhile; 
Verwandte Themen