Есть ли способ изменить порядок, в котором плагины отображаются на странице?


В настоящее время в моей установке WordPress активированы следующие плагины:

Строка 1:

Внешний мозг

Строка 2:

Подписка через RSS/электронную почту feedburner

Строка 3:

Виджет твитов Topsy, виджет FB, похожий на виджет, виджет WP-Отправить другу по электронной почте

Я хочу изменить порядок, в котором они появляются.

Я хочу, чтобы виджеты в строке 3 появлялись первыми, виджет outbrain появлялся последним в строке 3. Как мне этого добиться?

Хотя Я могу немного повозиться с PHP, если требуется решение, я предпочитаю независимый плагин, чтобы позаботиться о заказе, если он существует!

Спасибо!

Author: Ashwin Prabhu, 2011-04-13

1 answers

Из вашего комментария похоже, что вы почти поняли,

Плагины, которые добавляют что-то под ваш контент, обычно use the_content фильтруют, вызывая функцию с помощью add_filter например, плагин outbarin вызывает это так:

add_filter('the_content', 'outbrain_display');

Таким образом, вы можете заказать их, передав параметр приоритета

add_filter('the_content', 'outbrain_display',99); 

Но изменять его непосредственно в файлах плагина неправильно, так как в следующий раз, когда вы будете обновлять плагин, вы потеряете эти изменения, поэтому правильный способ сделать это чтобы добавить действие после загрузки плагинов с помощью крючка действия plugins_loaded и удалить добавленные ими фильтры, а затем повторно добавить эти фильтры в нужном порядке:

add_action('plugins_loaded','my_content_filters_order');
function my_content_filters_order(){
    //first remove the filter call of the plugin
    remove_filter('the_content', 'outbrain_display');
    //... Do that for all filters you want to reorder
    //... ex: remove_filter('the_content', 'FB_like');

    //then add your own with priority parameter
    add_filter('the_content', 'outbrain_display',99);
    //... Do that for all filters just removed and set
    //... the priority accordingly 
    //...  Lower numbers correspond with earlier execution
    //... ex: add_filter('the_content', 'FB_like',98);
    //... this will run first then outbrain
}

Надеюсь, это поможет

 4
Author: Bainternet, 2011-04-13 11:46:47