В любом случае, "было много доработок по коду разными программистами", каждый из которых отвечал за свой "кусок", то неплохо, если всё это проверит ещё один, отвечающий за безопасность. Надёжнее всего, если с ним налажены постоянные отношения: сам себе гадить не будет.
А если сервер на 386 процессоре? А если БД не на локалхосте и связь между серверами на древнем модеме? А если в таблице миллион строк? Есть конкретный вопрос и есть конкретный ответ.---------- Добавлено 07.10.2016 в 01:31 ----------
Что за манера троллить на пустом месте...
Формируйте двухмерный массив и разбирайте его через двойной цикл.
Тоже обратил внимание. Напрашивается отдельная таблица для тегов и столбец с id тегов в таблице новостей. Правда, пришлось бы часть работы перевалить на скрипт, но зато количество строк уменьшилось бы в разы.
Этот запрос выведет 1,3 и 4. А надо только 1 и 3.
Читабельность такая же. Убрали лишнюю операцию. Плюс к этому, если массив большой, он память жрёт.
Если взять за основу Ваш, то как-то так:
//related posts $categories = get_the_category(); $categories_id = ''; foreach($categories as $cat) { $categories_id .= ','.$cat->cat_ID; } $categories_id = ltrim($categories_id, ','); unset($categories); $related_posts = get_posts(array( 'post_type' => 'tov', 'author' => $post->post_author, 'posts_per_page' => 20, 'orderby' => 'rand', 'category' => $categories_id, 'exclude' => $post->ID ));
Не понимаю вопроса. Вы не знаете, как сразу сформировать строку? Или вопрос ещё в чём-то?
Не понимаю Вашего сарказма. Просто я, как и Ваш оппонент, не понимаю, зачем сначала формировать массив, а уже из него - строку, вместо того, чтобы сразу сформировать строку, если Вы не собираетесь использовать этот массив для каких-то иных целей.
Чтобы лишних движений не делать, хотя бы. Сказал бы ещё про экономию памяти, но больно массив маленький.
print_r($categories_id);
И если с этим всё нормально, тогда смотреть запрос к БД.