有人让我创建一个解决方案,在WP博客的标语中使用HTML锚()。E、 g.如:
Just another <a href="http://www.wordpress.org">WordPress</a> website
我提出了一个小插件,用户可以在标语中使用伪代码,该插件将伪代码转换为HTML锚。类似于
Just another [[http://www.wordpress.org]]WordPress[[/]] website
这很好,但是WordPress一直将HTML编码为实体,我不知道如何解决或防止这种情况。
我最好的猜测是,在我的插件之后会触发其他一些过滤器挂钩,也许我需要使用其他挂钩(?)我尝试了option\\u blogdescription和pre\\u option\\u blogdescription,两者都有相同的效果。然而,这只是一个猜测,即使这样,我也不知道该用什么钩子。
此外,我尝试了不同的方式来获取标语内容(以防止它已经作为实体到达),我尝试直接从hook参数接收它,使用get\\u选项获取,使用$wpdb->get\\u结果获取,但都使用相同的结果。
我尝试了几种方法来解码它,比如html\\u entity\\u decode()和wp\\u kses()。同样,所有的结果都是一样的。
但是,如果在我的插件出现后所有内容都被编码,那么我的任何努力都不会产生任何效果。
我有更多版本。最新的两个:
挂钩add\\u过滤器(\'option\\u blogdescription\',\'add\\u html\\u blog\\u description\');
功能1
function add_html_blog_description( $option_value ) {
$url = \'http://www.wordpress.org\';
$tagopen = \'[[\';
$tagclose = \']]\';
$option_value = str_replace($tagopen, \'<a href="\' . $url .\' ">\', $option_value);
$option_value = str_replace($tagclose, \'</a>\', $option_value);
return $option_value;
}
功能2
function add_html_blog_description( $option_value ) {
global $wpdb;
$allowed_html = array(
\'a\' => array(
\'href\' => array(),
\'title\' => array()
)
);
$results = $wpdb->get_results( "SELECT `option_value` FROM `wdwp_options` WHERE `option_name` = \'blogdescription\'", ARRAY_A );
$new_tagline = $results[0][\'option_value\'];
$new_tagline = html_entity_decode (wp_kses( $new_tagline, $allowed_html ) );
return $new_tagline;
}