it-swarm.com.de

Zeigen Sie alle benutzerdefinierten Beitragstypen an und ordnen Sie sie nach einem optionalen meta_key

Ich habe einen benutzerdefinierten Beitragstyp (CPT) namens property. Ich habe eine vorgestellte Eigenschaft metabox dafür registriert, wie in dieser Frage erläutert. " Wie erstelle ich einen vorgestellten Beitrag in einem benutzerdefinierten Beitragstyp? ". Eine vorgestellte Immobilie hat also meta_key='property_featured' und meta_value=on.

Was ich tun möchte, ist, alleproperty Posts anzuzeigen, aber sie nach meta_key='property_featured' zu ordnen. Damit werden die vorgestellten Eigenschaften zuerst in der Liste auf der ersten Seite angezeigt. Ähnliches Verhalten wie bei Sticky Posts. Und alle anderen property Posts werden nach Erstellungsdatum sortiert. Außerdem muss ich sicherstellen, dass die Paginierung korrekt funktioniert - und alle property Posts zusammen behandeln. Ich verwende hier einen benutzerdefinierten Paginierungscode . (Hoffe das macht Sinn).

Ich habe versucht, Argumente für WP_Query anzugeben. Wenn ich jedoch spezifiziere:

'meta_key' => 'property_featured',
'orderby' => 'meta_value'

dann werden nur property Posts mit diesem Schlüssel im Gegensatz zu allenproperty Posts angezeigt.

Wenn ich meta_key aus Argumenten lösche, weiß die Abfrage nicht, nach was sie sortiert werden sollen.

Wie zeige ich alle property Posts an und stelle dabei sicher, dass die featured Posts zuerst erscheinen und alle anderen property Posts nach Veröffentlichungsdatum sortiert sind?

Vielen Dank, Dasha

2
dashaluna
<?php
// query posts
$query_property = query_posts( array( 
     'orderby'    => 'date meta_value' // orderby date AND meta value
) );

// First loop
$query_feat = $query_string.'&meta_value=on&meta_key=property_featured';
// Offset for second loop
$query_all = $query_string.'&offset=3&meta_key=property_featured';

// First loop
if ( $query_feat->have_posts() : while ( $query_feat->have_posts() ) : # etc....
    // do stuff
endif;

// Second loop
if ( $query_all->have_posts() : while ( $query_all->have_posts() ) : # etc....
    // do stuff
endif;
?>
1
kaiser