Derzeit habe ich die Schleife, in der Beiträge zwischen zwei Daten mithilfe des posts_where
Filters aufgelistet werden:
function filter_where( $where = '' ) {
$where .= " AND post_date >= '2000-01-01' AND post_date <= 2004-12-31' ";
return where;
}
add_filter('posts_where', 'filter_where');
query_posts($query_string);
while (have_posts()) :
the_post();
the_content();
endwhile;
In einem meta_key
angerufenen habe original_date
ich für jeden Beitrag, den ich anstelle des verwenden möchte, ein anderes Datum gespeichert post_date
. Wie rufe ich dies korrekt meta_key
in die $where
Abfrage auf, um den gleichen Zweck wie die zu erfüllen post_date
?
$where .= " AND [meta_key=original_date] >= '2000-01-01' AND [meta_key=original_date] <= '2004-12-31' ";
Zum Beispiel ist die folgende SQL - Abfrage nicht zu funktionieren scheint, obwohl richtige Werte ( 2001-10-29
, 2004-11-03
usw.) in der Gegenwart sind original_date
meta_key
die Beiträge:
global $wpdb;
$where .= " AND (SELECT meta_value FROM $wpdb->postmeta WHERE meta_key='original_date' ) >= '2000-01-01' AND (SELECT meta_value FROM $wpdb->postmeta WHERE meta_key='original_date' ) <= '2004-12-31' ";
Das Folgende funktioniert gut für dieselben Beiträge, die post_date
als Referenz verwendet werden:
$where .= " AND post_date >= '2000-01-01' AND post_date <= 2004-12-31' ";
Möglicherweise muss das meta_value
Array von Fremdmaterial befreit werden, um die Ergebnisse in die gleiche Form zu formatieren wie post_date
? Wie können wir das angehen?
$where .= " AND (($wpdb->postmeta.meta_key = 'original_date' AND $wpdb->postmeta.meta_value >= '2000-01-01') AND ($wpdb->postmeta.meta_key = 'original_date' AND $wpdb->postmeta.meta_value <= '2004-12-31')) ";