我知道有一种简单的方法可以做到这一点,但我似乎找不到以下方面的最佳实践:;
我有一个插件,完成后应该在每个页面上生成HTML,我希望它不需要JavaScript就可以这样做,并且我希望它尽可能独立于主题。
它将出现在每个页面上,因此它不能是模板文件中的短代码(但header.php文件中的短代码合适吗?)。
理想情况下,应该有一个钩子,允许我在<h1>
标题中的标记(但不要认为这会那么容易!)
有没有人能给我指出正确的方向,或者给我发一些伪代码来帮助我?
Edit
Brian问我你到底想插入什么,以及模板上的什么地方,这是我的答案;
它将是插件中的一个元素,带有插件生成的选项值。它将出现在每页的右上角,页面的标题中。
最合适的回答,由SO网友:kaiser 整理而成
使用the_content
或the_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’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\' );