it-swarm.com.de

Reihenfolge nach Wert im serialisierten gemeinsamen Feld

Ziemlich lästiges Problem hier. Ich habe eine Site übernommen, die mehrere Informationen enthält, die in einem benutzerdefinierten Feld serialisiert sind. Zum Beispiel:

if ($new_query->have_posts()) : 

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

                $ids[] = get_post_custom( get_the_ID() );
                print_r($product_custom_fields['item_data']);

            endwhile;

        endif;

Würde etwas zurückgeben in der Art von:

{i:0;s:0:"";s:13:"regular_price";s:4:"1000";s:10:"sale_price";s:0:"";s:6:"weight";s:0:"";s:10:"tax_status";s:7:"taxable";s:9:"tax_class";s:0:"";s:12:"stock_status";s:7:"instock";s:12:"manage_stock";s:3:"yes";s:10:"backorders";s:2:"no";} 

Ich möchte eine Abfrage ausführen können, die alle diese Artikel nach "regular_price" ordnet, kann jedoch nicht den besten Weg finden, dies zu erreichen.

Ich habe mich derzeit für eine vorläufige Abfrage entschieden:

$new_query = new WP_Query( $args );

        if ($new_query->have_posts()) : 

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

                $ids[] =  get_the_ID();

            endwhile;

        endif;

Dadurch werden alle korrekten Elemente in das Array $ ids eingefügt. Ich kann dann eine Funktion ausführen, die diese IDs in der von mir gewünschten Reihenfolge sortiert, indem ich mit den serialisierten Daten herumspiele. Ich kann dann laufen:

 query_posts(array('post__in' => $ids) );

Dadurch werden meine Hauptergebnisse nach den IDs und der Reihenfolge gefiltert, die ich eingerichtet habe.

Das Problem dabei ist, dass die Posts zweimal abgefragt werden und möglicherweise ein bisschen langwierig sind.

Wenn jemand eine prägnantere Methode vorschlagen kann, möglicherweise mit direkter SQL-Einfügung in die Abfrage, wäre dies sehr willkommen.

2
mjjwatson

Ich würde einen Konverter schreiben und alle diese Daten einmal trennen.

Es gibt einfach keine Möglichkeit, eine wirklich schnelle Abfrage für serialisierte Daten zu erstellen.

1
fuxia