WP Мета-запрос — сравнение ПОДОБНОЙ / В сериализованной строке с сериализованным массивом в базе данных

#php #wordpress #serialization

#php #wordpress #сериализация

Вопрос:

Я пытаюсь передать содержимое на основе уникального идентификатора GUID. База данных хранится в сериализованном массиве, и это не может быть изменено.

Примером записи может быть:

 a:1:{i:0;s:8:"16YL3332";}
  

И в настоящее время я использую это в WP для сериализации строки и запуска ее в get_posts функции, используя следующее args

     $guid serialize(strval($_GET['guid'])); // var dump = string(15) "s:8:"16YL3332";"
    $args = array(
        "post_type" => "custom-post-type",
        "post_status" => "publish",
        "posts_per_page" => 1,
        "meta_query" => array( 
            "key" => "_fixtures",
            "value" => array($guid),
            "compare" => "LIKE"
        )
    );
  

Мне не удается вернуть соответствующие данные. WP по умолчанию возвращает самое последнее содержимое, опубликованное в типе post.

Ответ №1:

Почему вы добавляете переменную $ guid в массив? Я не уверен, что это необходимо. Если вы просто передадите его как 'value' => $guid , это сработает?

Кроме того, смотрите Следующий QA для получения дополнительной информации, которая может вам помочь:

https://wordpress.stackexchange.com/questions/115833/how-do-i-search-an-array-stored-in-a-custom-field-using-wp-query

Комментарии:

1. Привет, Грег — нет, это не просто использование в guid качестве одной переменной

2. Как бы то ни было, я только что заметил в вашем коде, опубликованном выше, что в строке нет знака «=»: $guid serialize(strval($_GET['guid'])); .. вероятно, это должно быть $guid = serialize(strval($_GET['guid']));