Intereting Posts
Отображение списка тегов на моей странице архивов Сортировка управления виджетами Проблема конвертирования одного сайта в многосайтовый – не создана папка blogs.dir Использование отдельных файлов журнала Apache для нескольких пользователей Как показать все связанные с почтой таксономии Можно ли определить переменные в коротком коде WordPress, а затем вызвать короткий код с использованием определенной переменной? динамическая боковая панель на первой странице Как добавить страницы в пользовательские меню «на лету» Как добавить настраиваемое поле и добавочное значение для всех опубликованных сообщений Использование WP_Query для запроса нескольких категорий с ограниченными сообщениями по категориям? Страница пользовательского типа сообщений не отображается Что не так с этим? Проблема enqueuing скриптов на отдельных сообщениях Как настроить разбиение на страницы для настраиваемого цикла на глобальном шаблоне (author.php, tag.php, archive.php?) Какой код писать в моем плагине, чтобы исключить мои плагины сгенерированных страниц из главного навигатора?

API WordPress.org – Получить плагины любимых плагинов

Недавние добавления в репозиторий WordPress.org. Наиболее заметно изменения на странице плагина и странице профиля автора, которая теперь показывает любимые плагины авторов .

Я хочу создать плагин виджета боковой панели, который отображает избранное авторов плагина. Я знаю, как использовать API для получения статистики плагинов, а также читать документы API DD32, но я не верю, что документы существуют в профилях или если API профиля вообще существует.

Я попытался использовать wp_remote_get и я могу получить тело html со страницы профиля, но не пытаюсь его проанализировать, но, похоже, это способ запутать свой путь. Было бы здорово, если бы я мог получить профиль в XML или json.

Есть ли какие-либо методы, которые мне не хватает или существует API профиля?

Редактировать:

Хорошо, у меня есть бета-версия на github, используя парсер SimpleHTML Dom. Я не думаю, что смогу получить звёздные рейтинги, но я очень доволен результатами, так как я впервые получаю API.

WordPress.org не позволяет очищать содержимое и запрещает вас (через @otto). Таким образом, это не выход, пока публичный API не будет выпущен.

Solutions Collecting From Web of "API WordPress.org – Получить плагины любимых плагинов"

Избранные плагины были добавлены в API WordPress.org. В 3.5 есть новая функция, которая позволяет вам получать доступ к вашим избранным из установщика плагинов.

См. http://core.trac.wordpress.org/ticket/22002 для получения информации о том, как он используется в ядре.

API позволяет вам извлекать объект, содержащий все плагины

  • имя
  • описание
  • автор
  • рейтинг
  • последняя обновленная дата
  • журнал изменений
  • стабильная версия
  • работает с версией wp

Чтобы получить объект

Сделайте вызов http://api.wordpress.org/plugins/info/1.0/, используя wp_remote_post, передав массив аргументов, включая действие, которое будет «query_plugins» и имя пользователя wp dot org для извлечения избранных.

 $request = wp_remote_post('http://api.wordpress.org/plugins/info/1.0/', array( 'timeout' => 15, 'body' => array('action' => $action, 'request' => serialize($args))) ); 

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

 function api( $action, $args ) { if ( is_array( $args ) ) $args = (object) $args; $request = wp_remote_post('http://api.wordpress.org/plugins/info/1.0/', array( 'timeout' => 15, 'body' => array('action' => $action, 'request' => serialize($args))) ); if ( is_wp_error($request) ) { $res = new WP_Error('plugins_api_failed', __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server&#8217;s configuration. If you continue to have problems, please try the <a href="http://wordpress.org/support/">support forums</a>.' ), $request->get_error_message() ); } else { $res = maybe_unserialize( wp_remote_retrieve_body( $request ) ); if ( ! is_object( $res ) && ! is_array( $res ) ) $res = new WP_Error('plugins_api_failed', __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server&#8217;s configuration. If you continue to have problems, please try the <a href="http://wordpress.org/support/">support forums</a>.' ), wp_remote_retrieve_body( $request ) ); } return apply_filters( 'c3m_favorite_results', $res, $action, $args ); } 

Применение

Это пример использования даст вам неупорядоченный список любимых плагинов, а также ссылку на плагин на dot org, ссылку на автора uri и рейтинг звезд.

 $api_data = api( 'query_plugins', array( 'user' => 'my_dot_org_username' ) ); $api_plugins = $api_data->plugins; echo '<ul class="c3m-favorites">'; foreach( $api_plugins as $plugin ) { $name = $plugin->name; ?> <li><strong><a target="_blank" href="http://wordpress.org/extend/plugins/<?php echo $plugin->slug ?>/"><?php echo esc_html( $name ); ?></a></strong><br> <div class="star-holder" title="<?php printf( _n( '(based on %s rating)', '(based on %s ratings)', $plugin->num_ratings ), number_format_i18n( $plugin->num_ratings ) ); ?>"> <div class="star star-rating" style="width: <?php echo esc_attr( str_replace( ',', '.', $plugin->rating ) ); ?>px"></div></div> <em><?php _e('By: ') ?></em> <?php echo links_add_target( $plugin->author, '_blank' ). '<br>'; ?> </li><?php } echo '</ul>'; 

результат

введите описание изображения здесь

Виджет скриншот из моего любимого плагина Виджет-плагин: http://wordpress.org/extend/plugins/favorite-plugins-widget/

Еще нет.

Отто сказал «скоро» в среду. Но в эти выходные он отправился на барбекю, поэтому «скоро», вероятно, «в этом месяце». 😉

Редактировать:

Otto42: @Ipstenu @EricMann У меня есть код для этого, но еще не развернутый. Некоторые дебаты по лучшему пути. Он будет там в конце концов.