Отображение внешних данных – не сообщения

Я создаю плагин, который должен отображать внешние данные, а не сообщения WordPress.

Что я сделал: зарегистрированные перезаписи, так что wp распознает мой архив / отдельные URL-адреса, подключен к template_include чтобы направить его на использование моего шаблона, если запрошенный URL был моим, а затем в шаблоне я вызываю функцию для загрузки внешних данных и отобразить его в формате post / archive.

Это работает отлично, пока я не переключаю шаблоны. К сожалению, существует вариация в двадцать четыредцатью двадцатью двадцатью шаблонными структурами, в которых #content и #main перевернуты.

  • TwentyFifteen: body > #page > #content > #primary > #main
  • TwentyFourteen: body > #page > #main > #primary > #content

Это означает, что независимо от того, что я кодирую для моего шаблона плагина, он нарушается в другом.

twentyfifteen/single.php

 get_header(); ?> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <?php // Start the loop. while ( have_posts() ) : the_post(); 

twentyfourteen/single.php

 get_header(); ?> <div id="primary" class="content-area"> <div id="content" class="site-content" role="main"> <?php // Start the Loop. while ( have_posts() ) : the_post(); 

Итак, мои вопросы:

  • Правильно ли я это делаю? Вы знаете, как лучше вводить внешние данные?
  • Почему двадцать четыре тега перевернуты? Это не ошибка? Потому что я проверил, возвращаясь к twentyeleven, и все они в порядке … # main> #primary> #content.
  • Есть ли способ сделать это, не требуя включения шаблона, чтобы он работал на других сайтах? Шаблоны будут проблематичными на каждом сайте, на котором используется плагин, именно по таким причинам. Я бы предпочел отказаться от шаблона и каким-то образом подключиться к файлам archive.php и single.php для отображения моего контента, учитывая, что URL-адрес соответствует одному из моих запросов.

Solutions Collecting From Web of "Отображение внешних данных – не сообщения"

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

 add_filter('the_content', 'my_content_178750', 1, 99); function my_content_178750($content) { return wp_remote_retrieve_body(wp_remote_get('http://example.com')); } 

Также есть возможность проверить путь, на котором вы находитесь, и решить, что вы хотите получить, в зависимости от этого.

Да, есть простой способ заставить его работать с большинством любых шаблонов.
Это точная причина, по которой так много плагинов используют короткие коды для ввода данных или других разумных добавок, независимо от того, для чего предназначен плагин. Структура шаблона слишком непредсказуема, чтобы сделать это так, как вы в настоящее время преследуете.

Таким образом, прямо из API это просто, как именование вашего короткого кода, а затем добавление его в ваш плагин.

 function foobar_func( $atts ){ return "foo and bar"; } add_shortcode( 'foobar', 'foobar_func' ); 

Как писал Skribe раньше … Я просто попытаюсь дать более подробную информацию о том, что он имел в виду, если вы еще не привыкли к тому, что является короткими кодами …

Штрих-коды были созданы для отображения различного контента разными способами, когда они включены в сообщения или страницы.

Вы можете увидеть здесь текущий список существующих коротких кодов, включенных в WordPress (по состоянию на 2015-02-20):

http://en.support.wordpress.com/shortcodes/

О том, что Skribe ссылается на API, можно найти здесь: (в соответствии с 2015-02-20) вы найдете более подробную информацию о коротком коде:

http://codex.wordpress.org/Shortcode_API

Вы можете видеть, что добавление короткого кода [gallery id = "123" size = "medium"] в сообщение или страница будет отображать изображения. (Подробнее см. Подробности).

То, что вы также можете сделать для плагинов, – это создать собственный ShortCode. Что это будет делать, он будет контролировать, где вы хотите, и как вы хотите, чтобы ваш плагин появлялся. ShortCode включен в страницу или сообщение, поэтому он всегда будет отображаться там, где он должен (если это вам нужно). Так что с кодом Skribe давал вам:

 function foobar_func( $atts ){ return "foo and bar"; } add_shortcode( 'foobar', 'foobar_func' ); 

Вы должны создать PAGE или A POST с помощью ShortCode [foobar] внутри, и на нем будет отображаться функция, называемая этим коротким кодом … В этом случае она будет писать на экране «foo and bar».

Если вы хотите, чтобы ваш плагин появлялся где-то в другом месте, а затем сообщения или страница, вы должны заглянуть в WordPress Hooks. Если вам нужна дополнительная информация о крючках, дайте мне знать, я добавлю к моему ответу. Но учитывая, что вы говорите о MAIN и CONTENT, имея свой собственный ShortCode, должно быть то, что вам нужно.