Одним простым решением для перемещения MongoCursor на стороне PHP является использование генераторов, а также foreach
или array_map($function, iterator_to_array($cursor))
. Пример:
function map_traversable(callable $mapper, \Traversable $iterator) {
foreach($iterator as $val) {
yield $mapper($val);
}
}
Вы можете встретить больше в документации PHP о синтаксисе генераторов .
Итак, теперь вы можете использовать / повторно использовать его (или аналогичную реализацию ) для любого предложения «проецировать» ваши данные на стороне PHP с любым количеством сопоставлений (точно так же, как и в aggregate
), но с меньшим количеством итераций. И это решение довольно удобно для ООП в случае повторного использования ваших функций map
.
UPD: Только для вашего примера ниже:
$cursor = $db->getCollection('example')->find(["example":1],["_id":1]);
$mapper = function($record) {
return array('id' => (string) $record['_id']); //see \MongoId::__toString()
}
$traversableWithIdAsStringApplied = map_traversable($mapper, $cursor);
//...
теперь вы можете продолжить больше сопоставлений, применяемых к $ traversableWithIdAsStringApplied, или используйте только iterator_to_array для простого извлечения массива.
Используемая вами тема - Lavander Lite. Он использует пакет JS, называемый Infinite Scroll, но его версия устарела и использует ссылки не-https, что приводит к вашей ошибке.
Вы можете попробовать переопределить этот файл с копией файла с фиксированными URL-адресами, используя дочернюю тему.
Другим вариантом является непосредственное изменение URL-адресов в самих файлах темы. Обычно об этом предупреждают, поскольку темы могут быть обновлены, и вы можете потерять свои изменения, но тема старая и не поддерживается - в последний раз она обновлялась в конце 2017 года, поэтому вряд ли появятся дальнейшие обновления.
Итак, для быстрого исправления откройте /wp-content/themes/lavander-lite/js/pmc_infinity.js
и найдите и замените:
loadingImg:"http://www.infinite-scroll.com/loading.gif
на:
loadingImg:"https://infinite-scroll.com/loading.gif
или, что еще лучше, загрузите этот gif-файл и поместите его на свой сервер со ссылкой на него из этого файла.