- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Была прекрасная тема, которая единственная во всем нете объясняла как получить ID всех опубликованных записей в Вордпрересс. Пользовался этой функцией успешно /ru/forum/418293
Но теперь не все хостинги поддерживают устаревший mysql_query()
Как это сделать не нашел. Во откопал такую вот функцию. Но она выводит все ID (и черновики и корзину.)
function _post_id( $cat_or_tag_id='0'){
global $wpdb;
$all_posts = $wpdb->get_col( $wpdb->prepare( "SELECT object_id FROM $wpdb->term_relationships WHERE term_order = %d", $cat_or_tag_id ) );
return $all_posts;
}
Пробовал переписать под wp_posts заменив данные - дает пустой массив.
А что мешает вам в прежнем решении использовать вместо mysql, например, mysqli?
Т.е вместо
mysql_connect(‘localhost’, $user, $password)
использовать
mysqli_connect(‘localhost’, $user, $password, $dbname)
Как это сделать не нашел.
https://codex.wordpress.org/Class_Reference/WP_Query - офиц. ман
http://wp-kama.ru/function/wp_query - вольный перевод по русски.
Но теперь не все хостинги поддерживают устаревший mysql_query()
Не трогай базу! Никогда не трогай базу руками.
Почему? Я новичок просто
sql инъекции, уязвимость
а выше описанные функции делают защиту от них
вот функция возращает все id постов
'post_type' => 'post', // тип поста
'posts_per_page' => -1, // количество записей, -1 - все
'post_status' => 'publish'// только опубликовыные посты
sql инъекции, уязвимость
а выше описанные функции делают защиту от них
вот функция возращает все id постов
'post_type' => 'post', // тип поста
'posts_per_page' => -1, // количество записей, -1 - все
'post_status' => 'publish'// только опубликовыные посты
При большом количестве постов не хватает оперативки. В посте есть отличная функция которая выводит в массиве даже сто тысяч id. Но она не учитывает publish поста.
---------- Добавлено 14.05.2018 в 21:37 ----------
Если переписать функцию в начале темы под таблицу с записями то она перестает работать. Возвращает пустой массив.
function _post_id( $cat_or_tag_id='publish'){
global $wpdb;
$all_posts = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->wp_posts WHERE post_status = %d", $cat_or_tag_id ) );
return $all_posts;
}
---------- Добавлено 14.05.2018 в 21:43 ----------
Бинго! Все заработало!!! Оказывается не надо писать wp_ перед названием таблицы)
Вот работающий варинат - возвращает массив с id всех опубликованных записей (и страниц)
Ну откуда мне знать какое количество ты там выводишь? :)
Я думал там небольшое количество тебе надо то моя функция справился бы на ура.
Я вообще через wp-api делал бы большой вывод данных.
Тебе выше написали не трогай прямые обращение к бд, но видимо тебя не переубедить, дело твое, набьешь шишки, поймешь :)
Почему? Я новичок просто
Прежде всего потому, что в базе много зависимостей, временных данных и хранение в сериализованных массивах. См https://codex.wordpress.org/Database%20Description
Кроме того - структура базы и данных может поменяться при обновлении. Такое уже было неск раз в истории ВП. Соответственно, всё может поломаться.
При чтении (как в данном случае) ты конечно не повредишь базу, но легко можно получить неверные результаты. А вот когда так изменяют данные, и тем боле добавляют — это очень опасно.
Поэтому нужно просто привыкать использовать функции/апи.
(Ок, пароль можно изменить руками. А вот логин или домен уже нет. Логин вообще менять нельзя).
«Руками» — значит прямыми SQL запросами в БД или непосредственно в РМА или аналогах.
При большом количестве постов не хватает оперативки.
Может времени? get_posts не быстрая функция.
Кстати, а какова цель получения всех ИД? Зачем и где потом должно использоваться?
Оказывается не надо писать wp_ перед названием таблицы)
Вот работающий варинат - возвращает массив с id всех опубликованных записей (и страниц)
Ну хорошо, что тут хоть специальный класс использовал . Это более безопасно, но без особой нужды и его не стоит трогать. Во всяком случае до хорошего понимания ВП.
А это, кстати, хороший пример/объяснение почему нельзя использовать прямые SQL-запросы - ты нарвался на префикс таблиц. А он не должен участвовать в запросах/коде, тк его можно изменить и при установке ВП и даже после (хотя это не стоит делать на рабочем сайте).
Тебе выше написали не трогай прямые обращение к бд,
Ну справедливости ради, в данном случае (использование wpdb) более-менее нормально. Хуже было бы если бы голым SQL полез.
seovisor, если хочешь понять ВП и что делает код см. как надо делать: увидел функцию (как напр get_posts, что показал AGRESSOR ) — идешь в кодекс (и новый, пока не полный) или на https://wp-kama.ru/functions и ищешь там функцию, изучаешь. Функции имеют логически и интуитивно понятные названия, так что поиск нужной тоже не составляет труда. Ну а так, если что надо сделать — лучше переспросить на форуме, подскажем как лучше/правильнее/безопаснее решить задачу.
Кроме того - структура базы и данных может поменяться при обновлении. Такое уже было неск раз в истории ВП. Соответственно, всё может поломаться.
При чтении (как в данном случае) ты конечно не повредишь базу, но легко можно получить неверные результаты. А вот когда так изменяют данные, и тем боле добавляют — это очень опасно.
Поэтому нужно просто привыкать использовать функции/апи.
В данный момент все работает. И хорошо. Поломается - буду обновлять) В общем я так и начинал осваивать базы txt = > csv => SQLite => MySQL Постепенно понимал преимущества каждого варианта 🤪
Кстати, а какова цель получения всех ИД? Зачем и где потом должно использоваться?
У меня по ним самописный плагин карту сайта создает/обновляет. Стандартные плагины тормозят все неимоверно.
Ну хорошо, что тут хоть специальный класс использовал . Это более безопасно, но без особой нужды и его не стоит трогать. Во всяком случае до хорошего понимания ВП.
Ну хоть что-то правильно сделал ☝