@m4f1

Как правильно сделать запрос в БД wordpress?

Моя проблема с выводом движется к завершению...
И так, по существу:

Имеется запись в БД wordpress
Поздравляем всех моряков-ветеранов МКФ, особенно тех кто служил в Военно-Морском Флоте с праздником! Всем желаем здоровья, бодрости и успехов!

<#pic#3483#0#0#0##>

Совет РОО ветеранов МКФ


С нее нужно вытащить id картинки и сделать запрос к базе данных вордпрес, после чего в другой колонке взять адрес изображения и внести в текст.

Поиск текста и замену делаю через:
function replace_text($text) {
$line_img = 232323;
	$text = preg_replace('<#+[a-z]+#+(\d*)#\d*#\d*#\d*##>', $line_img, $text);
return $text;
}
add_filter('the_content', 'replace_text');

Код рабочий.
Проблема у меня возникает только в запросе к БД вордпреса и поиск нужной информации. Помогите пожалуйста исправить так, чтобы работало!

В данный момент мой корявый код выглядит именно так:
/* Выборка тегов для замены, начиная с картинки */
function replace_text($text) {
	// Поиск информации на странице
	preg_match_all('<#+[a-z]+#+(\d*)#\d*#\d*#\d*##>', $text, $matches);
	print_r($matches[1]);
	
	//$id = $matches[1]
	
	// Запрос в БД
	$query = 'select smallURL from Images where id = ' .(int)$id;
	$result_image = mysqli_query($con, $query);
	$row_image = mysqli_fetch_array($result_image);
	$line_img = $row_image;

mysqli_close($link);
// Замена картинок (ббкод на картинку из БД)
	$text = preg_replace('<#+[a-z]+#+(\d*)#\d*#\d*#\d*##>', $line_img, $text);
// Замена ссылок на человекопонятные (ббкод на обычные ссылки-урл)
	$text = preg_replace('/<#link#(.*)#URL:(.*)#>/', ' <a href="$2">$1</a>', $text);
// Замена лишнего кода на NULL	
	$text = preg_replace('/<#pcat#(.*)#>/', '', $text);
return $text;
return $text_image;
}
add_filter('the_content', 'replace_text');
  • Вопрос задан
  • 210 просмотров
Решения вопроса 1
glaphire
@glaphire Куратор тега PHP
PHP developer
без живого вордпресса сложно отдебажить, но IDE сразу дает замечания по ряду моментов:
//$id = $matches[1]
// Запрос в БД
    $query = 'select smallURL from Images where id = ' .(int)$id;

Переменной $id тут неоткуда взяться, расскоментируйте //$id = $matches[1] .
Второе:
Переменной $con не существует в рамках области видимости этой функции, надо передать ее как аргумент функции replace_text (я так понимаю $con - это коннекшн к базе, но я не помню где и как он в вордпрессе):
function replace_text($text, $con) {
//остальной код
$result_image = mysqli_query($con, $query);

Третье:
Два return'а подряд не имеют смысла - они в одной ветке кода. Если надо вернуть и $text, и $text_image - верните массив:
//неправильно
    return $text;
    return $text_image;
//правильно:
    return ['text' => $text, 'text_image' => $text_image];


Чтобы вылавливать синтаксические ошибки - включайте отображение ошибок в php, чтобы вылавливать логические ошибки - используйте функции var_dump($var) и die().
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы