覆盖或扩展Wordpress函数»wp_html_excerpt

时间:2014-01-22 05:04:19

标签: php wordpress function

如何使用我自己的函数更改(覆盖,扩展)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;
}

1 个答案:

答案 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
}