web-dev-qa-db-fra.com

Filtre de boucle personnalisé WordPress par meta_key et valeur avec données en série

J'essaie d'exécuter une boucle personnalisée pour un type de message personnalisé avec un filtrage par meta_key et value

Maintenant, la simple méta-valeur fonctionne bien, mais j’ai un problème avec le type de données sérialisées ci-dessous (imbriqué).

J'utilise wpalchemy pour la méta-boîte. meta_key pour le type de message est _event_meta et value est comme ci-dessous

a:9:{s:19:"ac_event_operations";a:1:{i:0;s:8:"Training";}s:18:"ac_event_positions";a:1:{i:0;s:10:"Supervisor";}s:18:"ac_event_employees";a:1:{i:0;s:2:"15";}s:13:"ac_event_date";s:10:"2017-06-15";s:19:"ac_event_start_time";s:5:"06:30";s:17:"ac_event_end_time";s:5:"07:00";s:14:"ac_event_place";s:6:"Office";s:18:"ac_event_organizer";s:4:"Jack";s:16:"ac_event_contact";s:4:"Rose";}

J'essaie de filtrer All Events en fonction de ac_event_operations, ac_event_positions, ac_event_employees

Donc, pour moi, le défi consiste à filtrer les événements avec la valeur méta_keys ci-dessus. Voici la requête que j'ai utilisée mais bien sûr, cela ne donne aucun résultat.

global $event_mb;
$meta = get_post_meta( get_the_ID(), $event_mb->get_the_id(), TRUE );

$paged    = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args     = [
    'post_type'      => 'event',
    'posts_per_page' => get_option( 'posts_per_page' ),
    'paged'          => $paged,
    'meta_query'     => [
        'meta_key' => '_event_meta',
        'value'    => '%ac_event_employees%',
        'compare'  => 'LIKE'
    ],

];
$temp     = $wp_query;
$wp_query = NULL;
$wp_query = new WP_Query( $args );
1
pixelngrain

selon l’opinion philosophique, les personnes qui stockent des données sérialisées ne les utilisent pas pour des recherches.

Si vous devez rechercher dans ces données, vous devez accrocher le crochet save_post (ou ce qui est pertinent) et stocker tout ce dont vous avez besoin dans une autre méta de manière que vous puissiez utiliser dans la recherche.

Notes de côté:

  1. La recherche en méta n'est pas évolutive
  2. LIKE a une performance horrible, si vous voulez l'utiliser, vous devriez vous demander où vous êtes-vous trompé;)
1
Mark Kaplun