Intereting Posts
Как динамически менять лозунг темы от администратора? Как добавить текстовый редактор в меню плагина? Создание структурированных документов (книг) в WordPress? Как переопределить существующее действие плагина с новым действием Перенос данных между локальным сервером и сервером разработки Таксономия пули по сроку ID Постоянная ссылка для настраиваемого типа сообщений с настраиваемым полем Цикл шаблона пользовательской таксономии Архивы даты для пользовательских типов сообщений Как я могу скрыть заголовок раздела, если в пользовательских полях нет данных? Отображать сообщение мета на странице редактирования в admin Как получить сообщение после публикации из редактора wordpress прежде, чем его можно будет сохранить (опубликовать)? Определение «последнего» класса в сообщениях foreach в блоге Создание сообщений из данных API, как идентифицировать уже импортированные должности? Загружать и выполнять javascript из тела

Невозможно вызвать WPDB внутри шаблона RSS

Я пытаюсь создать настраиваемый канал RSS, который будет отображать и отображать информацию из созданной мной таблицы, которую я использую в другом месте на моем сайте WP. Стол и все отлично работают.

Однако даже когда я пытаюсь использовать простой шаблон RSS (который настроен и доступен для просмотра):

<?php /* Template Name: Custom RSS Template - beforeAfters */ header('Content-Type: '.feed_content_type('rss-http').'; charset='.get_option('blog_charset'), true); echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" > <channel> <?php global $wpdb; $beforeAfter = $wpdb->get_row('SELECT * FROM wp_before_after WHERE `gallery_display` = 1'); foreach($beforeAfter as $imageSet) { ?> <item> <title><?php echo get_the_title($imageSet->ID); ?></title> </item> <?php } ?> </channel> </rss> 

Я получаю эту ошибку:

Эта страница содержит следующие ошибки: ошибка в строке 11 в столбце 51: Entity «trade» not defined Ниже приведена рендеринг страницы до первой ошибки.

Отображается пустая страница (поскольку ничего не отображается). Однако, если я $beforeAfter строку, где $beforeAfter , ошибка исчезает, и я начинаю видеть вывод RSS-канала в браузере (хотя он отображает ошибки, связанные с недопустимой линией foreach .. это нормально.

Но мой вопрос: почему вызов $wpdb , вызывающий сообщение об ошибке, и как я могу заставить переменную вытащить строку базы данных, чтобы я мог использовать переменные в шаблоне RSS?

** DUMP $ beforeAfter **

 <pre class="xdebug-var-dump" dir="ltr"> <small> C:\wamp64\www\bellavou\wp-content\themes\bellavou\rss-beforeAfters.php:17: </small> <b>object</b> ( <i>stdClass</i> )[ <i>4196</i> ] <i>public</i> 'id' <font color="#888a85">=></font> <small>string</small> <font color="#cc0000">'1'</font> <i>(length=1)</i> <i>public</i> 'created' <font color="#888a85">=></font> <font color="#3465a4">null</font> <i>public</i> 'before_date' <font color="#888a85">=></font> <font color="#3465a4">null</font> <i>public</i> 'after_date' <font color="#888a85">=></font> <font color="#3465a4">null</font> <i>public</i> 'patientID' <font color="#888a85">=></font> <small>string</small> <font color="#cc0000">'2137'</font> <i>(length=4)</i> <i>public</i> 'procedureID' <font color="#888a85">=></font> <small>string</small> <font color="#cc0000">'238'</font> <i>(length=3)</i> <i>public</i> 'patient_display' <font color="#888a85">=></font> <small>string</small> <font color="#cc0000">'1'</font> <i>(length=1)</i> <i>public</i> 'procedure_display' <font color="#888a85">=></font> <small>string</small> <font color="#cc0000">'1'</font> <i>(length=1)</i> <i>public</i> 'gallery_display' <font color="#888a85">=></font> <small>string</small> <font color="#cc0000">'1'</font> <i>(length=1)</i> <i>public</i> 'before_img' <font color="#888a85">=></font> <small>string</small> <font color="#cc0000">'face-lift_1_b.jpg'</font> <i>(length=17)</i> <i>public</i> 'after_img' <font color="#888a85">=></font> <small>string</small> <font color="#cc0000">'face-lift_1_a.jpg'</font> <i>(length=17)</i> <i>public</i> 'period_taken' <font color="#888a85">=></font> <small>string</small> <font color="#cc0000">'1week'</font> <i>(length=5)</i> <i>public</i> 'notes' <font color="#888a85">=></font> <small>string</small> <font color="#cc0000">''</font> <i>(length=0)</i> </pre> 

Solutions Collecting From Web of "Невозможно вызвать WPDB внутри шаблона RSS"

После обсуждения мы обнаружили, что проблема связана не с вызовом $ wpdb-> get_row, а с несоответствием между возвращаемыми данными и обработкой в ​​цикле foreach.

Для одной строки данных, заменяя …

 foreach($beforeAfter as $imageSet) { ?> <item> <title><?php echo get_the_title($imageSet->ID); ?></title> </item> <?php } 

… с …

 <item> <title><?php echo get_the_title($imageSet->ID); ?></title> </item> 

… останавливает ошибку подачи.

Или для нескольких строк вы можете настроить свой запрос.