Korzystam z sieci wielu witryn i mam skonfigurowane zapytanie SQL, które używa swith_to_blog (); i odpytuje posty.
Czy istnieje sposób, w jaki mogę zadeklarować zapytanie w nowym WP_Query i faktycznie połączyć to zapytanie z innym?
Zasadniczo, jeśli to zrobię:
$number1 = new WP_Query($multisitequery);
Czy mogę to połączyć z:
$number2 = new WP_Query($normalquery);
$normalquery
przechowuje ustawienia takie jak paginacja, na stronę, fragment, tytuł itp. na shortcode portfolio.
Chciałbym, aby zawierało zapytania z mojego nowego $multisite
zapytania.
Czy można to osiągnąć? Chcę tylko uratować mnie przed stworzeniem całkiem nowego lol konfiguracji krótkiego kodu
Z góry bardzo dziękuję. Rory
EDYCJA ========
Mam:
$portfolio = array();
$portfolio = $settings;
W dalszej części mojej funkcji portfela „po wszystkich ustawieniach $ [„ opcje ”]” mam:
$portfolio_query = new WP_Query( $portfolio );
$portfolio_query
wykorzystuje pętlę na szablonie strony.
Chcę dodać do tego dodatkowe zapytanie:
global $wpdb, $blog_id, $post;
$blogs = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM wp_blogs ORDER BY blog_id" ) );
$globalcontainer = array();
foreach ($blogs as $blog){
switch_to_blog($blog->blog_id);
$globalquery = query_posts($args);
$globalcontainer = array_merge( $globalcontainer, $globalquery );
restore_current_blog();
}
gdzie zakładam, że $globalcontainer
byłaby to tablica do scalenia z wp_query();
.
Biorąc więc pod uwagę to, na co odpowiedziałeś, teoretycznie mógłbym po prostu:
$mergedqueryargs = array_merge($portfolio , $globalcontainer);
$portfolio_query = new WP_query($mergedqueryargs);
Czy to byłoby poprawne?
Po drugie, jeśli chodzi o nadpisywanie klucza tablicy array_merge ..... Jak miałbym przerwać nadpisywanie?
Generalnie łączę ich tablice identyfikacyjne i wykonuję trzecie zapytanie. Aby utrzymać pierwszy zestaw zapytań tanio, zwracam tylko ich identyfikatory, używając parametru pola takiego jak to:
Mam nadzieję że to pomoże
---EDYTOWAĆ---
Po mojej odpowiedzi edytowane jest oryginalne pytanie dotyczące szczegółów na wielu stronach. W przypadku łączenia postów na wielu stronach nie działa.
źródło
'orderby' => 'post__in'
w ostatnim zapytaniu.Więc jeśli masz to:
Zakładam, że zdefiniowałeś je gdzieś wcześniej?
... w takim przypadku, aby połączyć dwa zapytania, tylko
array_merge()
dwie tablice przed przekazaniem ich donew WP_Query()
:Pamiętaj, że w
array_merge()
rozmowie ważna jest kolejność . Jeśli oba mają ten sam klucz tablicy, druga tablica zastąpi pierwszą tablicę.źródło