Возникла необходимость выбрать некие данные из таблицы wp_post. Делаю это так
$result = mysql_query("SELECT * FROM wp_posts WHERE post_status = ‘publish’ AND post_type = ‘post’ LIMIT 1");
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
$col=printf ("<center><div id=yes>%s</div> <div id=not> %s</div>", $row["post_modified"], $row["post_content"]);
}
mysql_free_result($result);
Вроде нормально, но он выводит все запись целиком, а как мне ограничить вывод текста записи, то есть нужное количество символов, например 200 не более, да и еще в post_content не только запись, но и картинки в виде ссылок, так вот картинки тоже выводятся все какие есть в записи, как ограничить их вывод до одной и ограничить размер их, до требуемого, возможно ли это
Аватарки для новостей – это с помощью плагина post avatar.
Количество символов можно ограничить, но это к примеру стоит делать если новости выводятся кратко и где нибудь в сайдбаре, есть множество уже готовых тем с реализованными возможностями.
У меня к вам встречный вопрос, зачем писать дополнительный запрос в базу? Возможно то что вы хотите реализовать можно сделать стандартными способами.
мне необходимо вывести записи из таблицы отличной от той на которой сидит wordpress, пользователь баз данных один и тот же, я переключаюсь , делаю мне необходимую базу по умолчанию,вывожу три записи с нужным текстом и нужного размером картинками и потом опять переключаюсь на соединение которое было. Зачем мне это нужно долго объяснять, если ты действительно понимаешь в этом подскажи пример как выбрать из таблицы записи нужной длины и картинки нужного размера. Можно ли это сделать типа : mysql_query("SELECT * FROM wp_posts WHERE post_status = ‘publish’ AND post_type = ‘post’ текст длиной не более 200 символов и картинка размером не более чем 150х150"); Извини если что не так
Для того чтобы вывести определённую длину символов в строке можно воспользоваться функцией substr().
Функция имеет 3 параметра substr($string,$start,$len):
$string – исходная строка;
$start – номер начального символа (нумерация начинается с 0), может принимать отрицательные значения;
$len – количество символов, которое надо выделить в строку начиная с символа $start – параметр необязательный, может принимать отрицательные значения.
Например есть строка "таблица"
В вашем случае, при получении результата запроса поля таблицы, вы сможете поместить определённое количество символов с начала строки в переменную:
Учтите, что использование этой функции имеет подводные камни в виде обработки спец символов, так что прежде чем обрезать текст, вам следует: либо полностью очистить вашу строку от BBCode, либо написать функцию, которая будет обрабатывать их.
Могу предложить вариант когда функция считает количество открытых и закрытых парных тегов, и недостающие выводит в конце строки.
По поводу картинок возможно вам поможет http://codex.wordpress.org/Using_Images
Кстати Ю.Б. писал по поводу миниатюр для постов вот тут – http://mywordpress.ru/support/viewtopic.php?pid=60753#p60753
А о том как делать миниатюры для постов, подробно описано тут – http://www.wp-info.ru/sozdanie-miniatyur-v-wordpress-29/
кручу верчу не могу догнать, как функция работает в принципе понятно (спасибо за ссылки изучаю), но вот не могу ее вписать в свой код который наверху, не выводит или показывает ошибку, помоги напиши пример с моим кодом который я дал в начале темы
Только помните про подводные камни которые я описывал…
Спасибо тебе большое не ожидал встретить здесь действительно полезный для меня совет, конечно же это наглость, но если есть время не решена вторая проблема это вывод картинок, они выводятся в оригинальном размере, можно ли как нибудь также ограничить размер ее и количество
Да сейчас немного изменил твой код
<style>
#widimg img {
max-width:85px;
height:85px;
float:left;
}
</style> <p>
<?php
$result = mysql_query("SELECT * FROM wp_posts WHERE post_status = ‘publish’ AND post_type = ‘post’ LIMIT 2");
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
$datePrint = $row["guid"];
$postPrint = $row["post_content"];
$postStr = substr($postPrint,0,850);
echo "<center> Модифицирован: Текст: <div id=widimg>$postStr</div><a href=$datePrint>Далее….</a></center>";
}
mysql_free_result($result);
?>
теперь выводит запись, текст Далее… стал ссылаться на запись, тоже спасибо тебе, но странно появилась такая проблема, мало того что картинка в оригинале(ну я писал), так после этого $datePrint = $row["guid"]; она стала ссылаться на то место где лежит типа мой сайт/wp-content/uploads/2009/09/с.jpg, можно ли сделать что бы она ссылалась на поле guid, иными
словами на адрес самой записи, как стала ссылается Далее….
Получилось изменить размер картинками стилями, как ты думаешь правильно ли это
Наглядный пример можно? 🙂 и какая версия WP стоит?
шаблон пока на денвере крутится, но теперь дело пойдет скоро будет пример, поверь он будет действительно уникальный
Да хочу добавить что проблема того что картинка дает ссылку на свое местонахождение а не на адрес записи до сих пор не устраненна, да же не знаю что и думать пока
Завтра расскажу как это можно попробовать реализовать, а сейчас спать. Кстати картинка не обрезалась а просто изменила размер, но это тоже завтра посмотрю.
Кстати шаблоны для сайтов предпочитаю делать с чистого листа фотошопа ;), а потом в любой движок…
И так, предлагаю немного поэкспериментировать с $postPrint = $row["post_content"];.
Первое, что необходимо реализовать – это очистить всю получаемую строчку от тегов типа <b>, <p> <div> и т.д., кроме <img>.
Второе – выполнить поиск в строке до символов "<img", после этого нужно найти закрывающий тег ">". Это для миниатюры.
Третье:
1. Либо отработать вариант обрезки картинки до нужных размеров как есть.
2. Либо при поиске символов "<img" сразу после нахождения брать ссылку которая начинается с http:// и заканчивается кавычками.
Четвёртое – если выбран путь 2, то с помощью GDLib можно спокойно работать с изображением.
Преимущество выполнения таких преобразований:
1. Не нужно обновляться до 2.9 только для того, чтобы загружать миниатюры для постов через админку.
2. На каждый пост -2 запроса к базе, т.к. строку уже получили полностью, и с ней нужно только поработать.
В принципе если в полном объёме реализовать всё что описано в этой ветке, то можно написать плагин к WP только с нужным функционалом.
vanicon попробуй реализовать в той последовательности что я описал. Мануал в интернете по каждому пункту есть.
извини что долго не отвечал, только сейчас с работы вернулся ,жулики совсем обнаглели, займусь этим, а на счет плагина подумаю, он действительно практически создан, этот плагин заставляет брать записи с другой базы данных и выводить их в нужном месте, не знаю кому нужен будет такой плагин, но попробую, но сначала шаблон, кстати эту функцию пришлось применять и на страницах с категориями и на странице вывода записей и даже на странице когда при поиски он не находит нужных записей, а вот обычные виджеты wordpress в этой теме вообще не применяются, хотя такая возможность и будет прописана в теме.
Если учесть все нюансы и собрать плагин, то он будет очень нужен. Т.к. запросов будет выполняться в разы меньше и вызов его функций можно будет использовать при проектировании тем к WP.
Снова обращаюсь за помощью к тебе, вот твой код нормально работает, разобрался подправил проблем нет. Сейчас возникла необходимость таким же образом (как ты дал код сверху) вывести записи только определенной категории или метки, да и сразу поясню, что мало того что она должна выбрать только записи относящиеся к одной или иной рубрики или метки, так она должна посмотреть из какой рубрики выведена запись на странице. Извини если что за бред поясню немного по русски. То есть осталась страница записей и страница ошибки сделать. Так вот нажимаю на запись выводит запись с баз движка, ниже или где мне надо выбрать данные с других таблиц, иными словами например вывести 5 записей, но не просто последних записей, как у тебя в коде(сверху) а именно из той рубрики или метки , что и запись с движка. Смотрел там плагин для wordpress, разобрал его по запчастям, бесполезно он не так проверяет, нашел в сети какой то усовершенствованный, тот якобы по рубрике проверяет, но тоже не получается. Есть время подумать над этим, подскажи как запрос составить хотя бы правильно на выборку данных только определенной рубрики и метки, а как проверить та ли эта рубрика или метка не к спеху
И что вам мешает сделать это сделать? Если уж так хочется написать свой запрос в БД, а не использовать функции WP, которые кстати позволяют сделать то что вы хотите, то:
1. Найдите в БД WP название поля для рубрик, т.е. как получает пост свою рубрику.
2. Сделайте запрос в БД который найдёт вам, допустим, id 5-nи последних записей с id рубрики как у вашего поста.
3. Собственно дело за малым, с помощью PHP вывести то что вы получили и не забудьте почистить хвосты за собой…
Снова возвращаюсь к выборке данных с таблиц в настоящее время выборка данных из различных категорий и меток не представляет проблемы, но остались подводные камни про которые ты говорил, вот вывожу таким запросом запись из рубрики:
<?php
$DB = "wp-ivan"; #название базы данных
mysql_select_DB($DB) or die("Ошибка подключения к базе данных…".mysql_error());
$result = mysql_query("SELECT DISTINCT p.ID, tp.name, p.guid, p.post_content, p.post_title, p.post_date
FROM wp_term_taxonomy tx,
wp_term_relationships tr,
wp_terms tp,
wp_posts p
WHERE
tx.taxonomy=’category’
AND tx.term_id IN (‘3’)
AND tx.term_taxonomy_id = tr.term_taxonomy_id
AND tx.term_taxonomy_id = tp.term_id
AND tr.object_id = p.ID
AND p.post_status = ‘publish’
AND p.post_type = ‘post’
ORDER BY p.post_date DESC LIMIT 3");
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
$zagPrint = $row["post_title"];
$datePrint = $row["guid"];
$postPrint = $row["post_content"];
$postStr = substr($postPrint,0,802);
echo "
<h1 class=select-tab-h2><a href=$datePrint>$zagPrint</a></h1>
<div class=select-tab-content>$postStr <a href=$datePrint>Далее…</a></div>
<div class=clear></div>";
}
mysql_free_result($result);
?>
Однако иногда в конце строчки во время обрезание текста выводит знак вопроса. Ты писал что необходимо либо полностью очистить вашу строку от BBCode (что я просто не знаю как сделать), либо написать функцию, которая будет обрабатывать их( это вообще выше моих сил пока). Так же ты писал, что можешь предложить вариант когда функция считает количество открытых и закрытых парных тегов, и недостающие выводит в конце строки. Мне подойдет любой вариант лишь бы убрать этот знак вопроса. помоги пожалуйста в этом вопросе. Диплом конечно важнее, но если есть немного времени ткни меня в нужном направлении