我真的很沮丧, 我是wordpress的新手, 我试图限制在文章内容文章中出现的最大标签链接数。下面是我的代码。我不知道该如何解决。
function link_words( $text ) {$replace = array();
$tags = get_tags();
$count=0;
if ( $tags ) {
foreach ( $tags as $tag ) {
$count++;
$replace[ $tag->
name ] = sprintf( '<
a href="http://www.srcmini.com/%s">
%s<
/a>
', esc_url( get_term_link( $tag ) ), esc_html( $tag->
name ) );
if( $count >
2 ) break;
}
}$text = str_replace( array_keys($replace), $replace, $text );
return $text;
}
add_filter( 'the_content', 'link_words' );
#1如果你的标签以逗号分隔, 则可能对你有用:
function limit_tags($tags) {
$tags = substr($tags, 0, strpos($tags, ', ', strpos($tags, ', ')+1));
return $tags;
}
add_filter('the_tags', 'limit_tags');
$ tags变量实际上是一个字符串…
#2你提到你的函数以你希望的方式工作(链接标签), 因此我不会对此感到困惑。如果查看get_tags()的文档, 你会看到它接受一些参数, 包括number会限制它。这样, 你将不会有一个$ counter类型变量。
你也可以只检查$ tags变量是否设置为真实值, 而无需先定义它。
无论是否定义了$ tags, str_replace也会发生, 如果找不到$ tags, 可能会引起问题, 因此应将其移至if语句中。
为了清楚起见, 由于你正在使用the_content过滤器, 因此我还将$ text变量更改为$ content。
add_filter( 'the_content', 'link_tags_in_content' );
function link_tags_in_content( $content ){
if( $tags = get_tags( array( 'number' =>
2 ) ) ){
foreach( $tags as $tag ){
$tag_link = sprintf( '<
a href="http://www.srcmini.com/%s">
%s<
/a>
', esc_url( get_term_link( $tag ) ), esc_html( $tag->
name ) );
$content= str_replace( $tag->
name, $tag_link, $content );
}
}return $content;
}
#3好吧, 我想我现在知道你想要更好的…
function link_words( $text ) {
$tags = get_tags();
if ( $tags ) {
foreach ( $tags as $tag ) {
$from = '!<
h2>
[^<
>
]*<
\/h2>
(*SKIP)(*F)|<
b>
[^<
>
]*<
\/b>
(*SKIP)(*F)|<
a\b[^>
]*>
.*?<
/a>
(*SKIP)(*F)|(\b'.$tag->
name.'\b)(?=[^>
]*(?:<
|$))!';
$to = sprintf( ' <
a href="http://www.srcmini.com/%s">
%s<
/a>
', esc_url( get_term_link( $tag ) ), esc_html( $tag->
name ) );
$text = preg_replace($from, $to , $text, 2);
}
}
return $text;
}
add_filter( 'the_content', 'link_words' );
【WordPress(限制帖子内容中的标签链接)】由于preg_replace(2)的限制, 并且位于tag循环内, 因此它将替换每个标签中文本中两个标签名称的实例… 这是否符合你的要求?请注意, 这不是大小写敏感的, 因此如果你的标签是句子中的第一个单词并且大写, 则它将不匹配。为此, 请看一下以下线程:PHP preg_replace:不区分大小写的匹配和区分大小写的替换
推荐阅读
- 侧边栏编辑器中的WordPress Ken主题错误-“致命错误(未捕获的错误:函数名称必须是字符串”)
- var上的WordPress JS引用错误
- WordPress的Job Manager搜索hero小部件按钮重定向
- Could not get lock /var/lib/apt/lists/lock#yyds干货盘点#
- 新加坡服务器哪里的比较便宜有CN2路线的吗
- 网络小知识
- 在VMWare 中安装OpenEuler 20.03 LTS SP2
- #yyds干货盘点# linux和window实现iscsi文件互通详细步骤和解释
- 第五周学习作业