创建将在每个页面上显示文本的插件

时间:2011-09-19 作者:Toby

我知道有一种简单的方法可以做到这一点,但我似乎找不到以下方面的最佳实践:;

我有一个插件,完成后应该在每个页面上生成HTML,我希望它不需要JavaScript就可以这样做,并且我希望它尽可能独立于主题。

它将出现在每个页面上,因此它不能是模板文件中的短代码(但header.php文件中的短代码合适吗?)。

理想情况下,应该有一个钩子,允许我在<h1> 标题中的标记(但不要认为这会那么容易!)

有没有人能给我指出正确的方向,或者给我发一些伪代码来帮助我?

Edit

Brian问我你到底想插入什么,以及模板上的什么地方,这是我的答案;

它将是插件中的一个元素,带有插件生成的选项值。它将出现在每页的右上角,页面的标题中。

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

使用the_contentthe_title/single_post_title(?)过滤并简单地预先添加/附加所需内容。还可以查看Action/Filter API Reference.

示例:

/**
 * Appends the authors initials to the content.
 * Mimics paper magazines that have a trailing short to show the end of the article.
 * Gets appended at the end inside the last paragraph.
 * @param (string) $content
 * @return (string) $content
 */
function wpse28904_append_to_content( $content )
{
    // Only do it for specific templates
    if ( is_page() || is_archive() )
        return $content;

    // Get author initials
    $author = \'\';
    preg_match_all( \'/[A-Z]/\', get_the_author(), $initials_arr );
    foreach ( $initials_arr[0] as $initials )
        $author .= $initials;
    $author_url     = get_the_author_meta(\'url\');
    if ( $author_url )
    {
        $title  = esc_attr( sprintf(__("Visit %s&#8217;s website"), $author ) );
        $author = "<a href=\'{$author_url}\' title=\'{$title}\' rel=\'external\'>{$author}</a>";
    }

    // Append  author initials to end of article
    $content  = preg_replace( "/<p[^>]*><\\\\/p[^>]*>/", \'\', $content );
    $position = strrpos( $content, \'</p>\' );
    $content  = substr_replace( $content, "<sub>{$author}</sub>", $position, -1 );

    return $content;
}
add_filter( \'the_content\', \'wpse28904_append_to_content\' );

结束

相关推荐

Can plugins become obsolete?

我认为WordPress插件是由第三方制作的。插件是否必须与WordPress升级保持同步?插件会过时吗?如果它们确实过时了,比如Linkedin共享按钮、推特推特按钮和类似Facebook的按钮的插件,切换到不同的插件会导致喜欢/推特/共享的数量丢失吗?如果插件可能会过时,那么它会发生吗?或者插件通常是最新的?或者他们是开源的,所以其他人会让他们保持最新?(正如你可能猜到的,我不是程序员。)