it-swarm.com.de

Benutzerdefinierten Beitragstyp auf der Startseite anzeigen

Ich habe meinem Wordpress-Design einen neuen benutzerdefinierten Beitragstyp hinzugefügt, der jedoch nicht auf der Startseite angezeigt werden kann. Ich habe versucht, Einstellungen vorzunehmen

<?php query_posts( array( 'post_type' => array('post', 'reviews') ) );?>

aber es scheint nicht zu funktionieren, es schleift nur meine normalen Beiträge. Anregungen wären sehr hilfreich.

Hier ist ein Auszug aus meinem Index, falls jemand ihn sehen möchte:

http://pastie.org/5120964

1
hiiambo

Ich würde die Verwendung von query_posts vermeiden - dies erzwingt einen weiteren Datenbank-Treffer. Es gibt viele andere Möglichkeiten, die Abfrage zu ändern, bevor Beiträge abgerufen werden. pre_get_posts ist einer von ihnen.

So zeigen Sie mehrere Beitragstypen auf der Startseite an (Seiten und Beiträge in diesem Beispiel):

<?php
add_action('pre_get_posts', 'wpse70606_pre_posts');
/**
 * Change that query! No need to return anything $q is an object passed by 
 * reference {@link http://php.net/manual/en/language.oop5.references.php}.
 *
 * @param   WP_Query $q The query object.
 * @return  void
 */
function wpse70606_pre_posts($q)
{
    // bail if it's the admin, not the main query or isn't the (posts) page.
    if(is_admin() || !$q->is_main_query() || !is_home())
        return;

    // whatever type(s) you want.
    $q->set('post_type', array('post', 'page'));
}

Dies würde in die functions.php Datei Ihres Themes oder in ein Plugin gehen.

3
chrisguitarguy

Ich würde das zuerst versuchen:

global $wp_query;
$args = array_merge( $wp_query->query, array( 
  'posts_per_page' => -1,
  'post_type' => 'any',
) );

query_posts( $args );

Dadurch wird die ursprüngliche Abfrage beibehalten und jeder einzelne Beitrag (-1 bedeutet "alle Beiträge") jedes Beitragstyps angezeigt. Das sollte Ihnen helfen, das Problem zu beheben.

0
Manu