是否筛选获取标题以删除某些字符?

时间:2016-10-30 作者:Gregory Schultz

我知道WordPress可以过滤短代码,比如the_content 但是否可以过滤get_the_content?

我有一个可以使用的函数substrstrpos 我知道这很管用the_title. 我也试过同样的方法get_the_title 但我无法让它工作。

是否可以进行同样的操作get_the_title?

迄今为止我掌握的代码:

function gg_short_title($title) {
// This can return false, so check there is something
$linkt=array();
$linkt[] = substr($title, 0, strpos($title, \' —\'));
$linkt[] = substr($title, 0, strpos($title, \' –\'));
$linkt[] = substr($title, 0, strpos($title, \' |\'));
$linkt[] = substr($title, 0, strpos($title, \' -\'));
$short_title = implode(\'\', $linkt);
if ($short_title) {
    return $short_title;
}

// Else just return the normal title
return $title; 
} 
add_filter(\'get_the_title\', \'gg_short_title\', 10, 1);
谢谢。

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

功能the_title() 只是函数的包装器get_the_title().

可以理解的是,过滤器the_title 实际存在于内部get_the_title(). 因此,无论您使用什么函数来实际显示它,都无所谓,您可以通过连接到the_title

SO网友:cowgill

除了莫拉莱达的答案之外,这里还有一个匹配和输出标题的较短方法。

Note - 它将在找到的第一个匹配项上拆分字符串,因此如果有多个“|”或“em-dash”字符,则可能会出现问题(即使对于原始代码也是如此)。

function gg_short_title( $title ) {

  if ( 1 === preg_match( \'(—|–|||-|\\|)\', $title, $matches ) ) {
    $short_title = explode( $matches[0], $title, 2 );
    $title = trim( $short_title[0] );
  }

  return $title;
}
add_filter( \'the_title\', \'gg_short_title\', 10, 1 );