有没有办法改变插件在页面中的显示顺序?

时间:2011-04-13 作者:Ashwin Prabhu

我目前在wordpress安装中激活了以下插件:

第1行:

外脑

第2行:

通过feedburner RSS/电子邮件订阅

第3行:

Topsy推特小部件、FB-like小部件、WP-Email-a-friend小部件

我想改变它们出现的顺序。

我希望第3行中的小部件首先出现,outbrain小部件最后出现在第3行。我如何做到这一点?

虽然如果解决方案需要,我可以稍微修改一下PHP,但如果有独立的插件,我更喜欢一个独立的插件来处理排序!

谢谢

1 个回复
最合适的回答,由SO网友:Bainternet 整理而成

从你的评论来看,看起来你几乎做到了,

通常在内容下添加内容的插件use the_content 通过使用调用函数进行筛选add_filter 例如,outbarin插件这样调用它:

add_filter(\'the_content\', \'outbrain_display\');
因此,您可以通过传递priority参数对其进行排序

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
}
希望这有帮助

相关推荐

插件放置在/wp-content/plugins内的文件夹中时不保存值

我得到了WordPRess插件的以下代码,它在每个页面/后期编辑屏幕上添加了两个自定义输入。然后将这些值保存并输出到前端页面的标题中。如果代码位于内部,则可以正常工作。php文件并直接放入“wp内容/插件”。然而,如果我把它放在插件(如“wp-content/plugins/myplugin”)中自己的文件夹中,那么在通过编辑屏幕保存帖子/页面时,输入字段不会保存。此外,它不会向前端页面html标题部分输出任何内容。这似乎是一个被放弃的项目,所以我无法与原始开发人员一起制定解决方案。然而,代码中的某些内容

有没有办法改变插件在页面中的显示顺序? - 小码农CODE - 行之有效找到问题解决它

有没有办法改变插件在页面中的显示顺序?

时间:2011-04-13 作者:Ashwin Prabhu

我目前在wordpress安装中激活了以下插件:

第1行:

外脑

第2行:

通过feedburner RSS/电子邮件订阅

第3行:

Topsy推特小部件、FB-like小部件、WP-Email-a-friend小部件

我想改变它们出现的顺序。

我希望第3行中的小部件首先出现,outbrain小部件最后出现在第3行。我如何做到这一点?

虽然如果解决方案需要,我可以稍微修改一下PHP,但如果有独立的插件,我更喜欢一个独立的插件来处理排序!

谢谢

1 个回复
最合适的回答,由SO网友:Bainternet 整理而成

从你的评论来看,看起来你几乎做到了,

通常在内容下添加内容的插件use the_content 通过使用调用函数进行筛选add_filter 例如,outbarin插件这样调用它:

add_filter(\'the_content\', \'outbrain_display\');
因此,您可以通过传递priority参数对其进行排序

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
}
希望这有帮助