Почему я не могу включить блог? - PullRequest
2 голосов
/ 10 июня 2009

Я обычно сталкиваюсь со сценарием, когда «властям, которые хотят», нужна точная копия страницы в нескольких местах на сайте. Вместо того, чтобы фактически дублировать содержимое, все, что я делаю, это перезаписываю выделенный раздел в навигационной панели и затем включаю страницу. Последняя страница выглядит примерно так:

<?php
    $top_nav_item_id = 'teen';
    include('../interests/teacher-resources.php');
?>

Это обычно работает. Я пытаюсь продублировать это для категории блога, сделанной в WordPress. Все, что мне кажется, это пустая страница, независимо от того, что я делаю. Я перепробовал все следующие строки:

<?php
    include('../blog/index.php');
    include('../blog/type/teen/index.php');
    include('../blog/type/teen/');
    include('../blog/');
?>

У кого-нибудь есть идеи? Это перезапись URL? Нужно ли включать файл шаблона для этой конкретной категории?

Любая помощь приветствуется.

Ответы [ 5 ]

6 голосов
/ 10 июня 2009

PHP include ожидает файлы, а не URL-адреса, поэтому у него нет доступа к пространству имен URL-адресов, предоставляемому WordPress. Эти файлы не существуют на диске; Сначала mod_rewrite превращает красивые URL-адреса во внутренний запрос в index.php, WordPress выясняет, что вы на самом деле хотели, основываясь на исходном URL-адресе, выбирает кучу вещей из базы данных, затем создает страницу.

2 голосов
/ 10 июня 2009

Это довольно сложная тема, и она не очень очевидна с самого начала. Эта страница должна помочь вам начать работу. Ключ должен включать заголовок блога WordPress - объясненный на связанной странице. Вы, вероятно, также захотите проверить Кодекс WordPress для ресурсов по использованию API движка WordPress.

0 голосов
/ 11 июня 2009

Это решение - взлом, но с самого начала проблема - взлом.

Я получил хорошее объяснение того, почему я не мог включить страницу блога, но не нашел альтернативы, которые могли бы мне помочь.

Мое окончательное решение состояло в том, чтобы изменить шаблон категории для этой страницы напрямую. Как было сказано ранее, я использую $ top_nav_item_id для управления тем, какой пункт меню выделен в навигационной панели, чтобы создать вид страницы, принадлежащей этому разделу. Вместо того, чтобы переопределить это, я просто сделал это условным для строки запроса. Пока пользователь переходит по законным ссылкам на мой сайт, он получит правильную строку запроса и не будет иметь проблем.

$ _ POST отключен в Wordpress. $ query_string (встроенный в WP) использует своего рода кэширование и всегда будет отображаться при первой загрузке.

Окончательное решение:

if(strtolower($_SERVER['QUERY_STRING'])=='display=teen') {
    $top_nav_item_id = 'teen';
} else {
    $top_nav_item_id = 'programs';
}

Спасибо всем, кто пытался помочь.

0 голосов
/ 10 июня 2009

Для подобных проблем я использую iframes, чтобы включить копию содержания. Вы можете написать исходную страницу для поиска флага «? Embed = 1» в URL-адресе и включать встраиваемый контент на главной странице только при наличии флага встраивания (так что вы можете пропустить панели инструментов и фреймы, которые будут избыточными .) Таким образом, URL-адрес iframe src будет использовать тег? Embed = 1 для встраивания содержимого.

0 голосов
/ 10 июня 2009
ini_set('display_errors', true);
error_reporting(E_ALL);

Не знаю, что происходит, но это так. Возможно, Wordpress не может найти свою среду, может быть, некоторые переменные переопределяются ... На самом деле, включать такие решения, как wordpress, плохая идея, потому что никогда не знаешь, какие глобальные переменные, функции, классы будут пересекаться.

PS: И, кстати, include использует пути файловой системы, но не URL-адреса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...