Я не знаком с PHP и столкнулся с проблемой фильтрации объекта массива.
У меня есть функция (get_post_meta_for_api), которая возвращает мне объект массива, но есть много свойств, которые мне не нужны...
Итак, я хотел бы отфильтровать свой объект по ключу, который содержит "seopress"
function get_post_meta_for_api( $object ) {
$post_id = $object['id'];
return get_post_meta( $post_id );
}
Заранее спасибо за вашу помощь :)
Спасибо за ваш ответ. Однако его можно использовать для фильтрации массива по ключу, а не по объекту.
Я немного потерялся сейчас. get_post_meta
возвращает массив. Вы хотите сохранить элементы, у которых есть seopress
в любом из ключей, или все элементы имеют эти ключи, но вы хотите исключить из объекта только другие клавиши, не относящиеся к seopress?
Я добавил ответ, который хочу отфильтровать, в свой пост. Я бы хотел оставить только ключ, который содержит «seopress» :)
Проверьте get_post_meta для получения дополнительной информации о том, как его использовать.
get_post_meta поставляется с возможностью получения одного мета-значения. Вот пример использования мета-значения, которое вы хотите получить.
get_post_meta($post_id, 'seopress', true);
Первый аргумент — это идентификатор сообщения, второй — мета-ключ, третий — если вам нужно одно значение. get_post_meta без true в третьем аргументе вернет массив, содержащий значение, с true вернет значение как есть.
Спасибо за ваш ответ, но я думаю, что это работает с точным соответствием. В моем случае мне нужен ключ, содержащий "seopress", и он не будет точно совпадать с ним.
Согласно документации, get_post_meta
возвращает массив (https://developer.wordpress.org/reference/functions/get_post_meta/),
это должно работать:
function get_post_meta_for_api( $object ) {
return array_filter(
get_post_meta($object['id']),
function ($key) {
return preg_match('/_seopress_*/', $key) === 1;
},
ARRAY_FILTER_USE_KEY
);
}
Отвечает ли это на ваш вопрос? PHP: Как использовать array_filter() для фильтрации ключей массива?