在帖子下方添加侧栏/小部件

时间:2011-02-02 作者:Brij

我已经在函数中创建并注册了侧栏。php并在另一个地方使用它。它工作得很好。现在我喜欢在柱子下面使用它。我已经安装了一些插件-书签,相关帖子。。。等等。他们也在岗位的下方。我想先显示侧栏,然后显示插件。

如果我把代码放在后面

the_content(); 
它出现在插件之后,但我必须在插件之前显示。

让我知道怎么做。

1 个回复
SO网友:jayarjo

理论很简单-你只需抓住the_content 优先级高于其他插件处理程序的过滤器:

add_filter(\'the_content\', \'insert_my_sidebar\', 9);
然后进来insert_my_sidebar 插入侧栏的函数。

但有一个警告-实际上不仅用户插件,而且默认过滤器的优先级为10。因此,默认情况下,无法区分它们。您必须隐式地取消设置默认过滤器,并以高于您的优先级重新设置它们。

remove_filter( \'the_content\', \'wptexturize\'        );
remove_filter( \'the_content\', \'convert_smilies\'    );
remove_filter( \'the_content\', \'convert_chars\'      );
remove_filter( \'the_content\', \'wpautop\'            );
remove_filter( \'the_content\', \'shortcode_unautop\'  );
remove_filter( \'the_content\', \'prepend_attachment\' );
然后:

add_filter( \'the_content\', \'wptexturize\', 8        );
add_filter( \'the_content\', \'convert_smilies\', 8    );
add_filter( \'the_content\', \'convert_chars\', 8      );
add_filter( \'the_content\', \'wpautop\'  , 8          );
add_filter( \'the_content\', \'shortcode_unautop\', 8  );
add_filter( \'the_content\', \'prepend_attachment\', 8 );
你显然应该在the_content 具有更高优先级的过滤器,如7:)

UPDATE:

完整示例:

add_filter( \'the_content\', \'prepare_to_insert_my_sidebar\', 7);

function prepare_to_insert_my_sidebar($content)
{
    remove_filter( \'the_content\', \'wptexturize\'        );
    remove_filter( \'the_content\', \'convert_smilies\'    );
    remove_filter( \'the_content\', \'convert_chars\'      );
    remove_filter( \'the_content\', \'wpautop\'            );
    remove_filter( \'the_content\', \'shortcode_unautop\'  );
    remove_filter( \'the_content\', \'prepend_attachment\' );

    add_filter( \'the_content\', \'wptexturize\', 8        );
    add_filter( \'the_content\', \'convert_smilies\', 8    );
    add_filter( \'the_content\', \'convert_chars\', 8      );
    add_filter( \'the_content\', \'wpautop\'  , 8          );
    add_filter( \'the_content\', \'shortcode_unautop\', 8  );
    add_filter( \'the_content\', \'prepend_attachment\', 8 );

    add_filter(\'the_content\', \'insert_my_sidebar\', 9);

    return $content;
}


function insert_my_sidebar($content)
{
    ob_start();
    dynamic_sidebar(\'name_of_your_sidebar\');
    $content .= ob_get_clean();

    return $content;
}

结束

相关推荐

How do you debug plugins?

我对插件创作还很陌生,调试也很困难。我用了很多echo,它又脏又丑。我确信有更好的方法可以做到这一点,也许是一个带有调试器的IDE,我可以在其中运行整个站点,包括插件?