如何使用我自己的函数更改(覆盖,扩展)wordpress函数“wp_html_excerpt()”?它不适用于:
function wp_new_html_excerpt( $str, $count ) {
code
}
add_action('wp_html_excerpt','wp_new_html_excerpt');
提前谢谢
*更新*
我尝试从我的摘录输出中删除这些标签:[表情符号] ... [/ emoji]
function wp_new_html_excerpt( $str, $count ) {
$str = wp_strip_all_tags( $str, true );
$str = mb_substr( $str, 0, $count );
$str = preg_replace( '/&[^;\s]{0,6}$/', '', $str );
// Remove Placeholders
$str = trim(preg_replace("/\[emoji\](.*?)\[\/emoji\]/i", "", $str));
return $str;
}
答案 0 :(得分:0)
使用您自己的自定义函数覆盖该函数将导致错误。在您的情况下,可能是您收到错误,因为之前已经定义了该函数。所以我不建议那样做。
正如您在源代码中看到的那样,函数定义未包含在if (function_exists(...))
中,因此您无法在没有错误的情况下覆盖它,即使您在此处定义之前定义它:{{3} }
查找可过滤的函数,该函数使用wp_html_excerpt
。
在您的情况下,如果您想更改摘录,可以使用add_filter('the_excerpt', 'my_custom_filter_function')
。
正如您在https://core.trac.wordpress.org/browser/tags/3.8/src/wp-includes/formatting.php#L3465中看到的那样,此过滤器会激动地传递一个参数。所以你的过滤器功能必须如下所示:
function my_custom_filter_function ($oldExcerpt) {
// Do something with $oldExcerpt, save to $newExcerpt
// Example: $newExcerpt = str_shuffle($oldExcerpt);
return $newExcerpt
}