如何编写一个 Wordpress 函数来在标题的第一个单词周围放置一个 Span?

发布于 2024-09-14 15:00:11 字数 550 浏览 4 评论 0原文

我想替换标题中的第一个单词以在其中包含

Wordpress 标题示例

<h2 class="entry-title"><a href="#">Welcome to Wordpress</a></h2>

我想要这样的

<h2 class="entry-title"><a href="#"><span>Welcome</span> to Wordpress</a></h2>

功能

function span_on_title($span) {
 return preg_replace('', '', $span, 1);
}
add_filter('the_title','span_on_title');

我可以知道在 preg_replace 上放什么吗

I want to replace first word in title to have <span></span> inside.

Example for Wordpress title

<h2 class="entry-title"><a href="#">Welcome to Wordpress</a></h2>

I want to be like this

<h2 class="entry-title"><a href="#"><span>Welcome</span> to Wordpress</a></h2>

the function

function span_on_title($span) {
 return preg_replace('', '', $span, 1);
}
add_filter('the_title','span_on_title');

May i know what to put on the preg_replace

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

烂柯人 2024-09-21 15:00:11
  $title = '<h2 class="entry-title"><a href="#">Welcome to Wordpress</a></h2>';

  $title = preg_replace('/<a([^>]+)>([a-zA-Z]+)\s/i', '<a$1><span>$2</span> ', $title);

  return $title;
  $title = '<h2 class="entry-title"><a href="#">Welcome to Wordpress</a></h2>';

  $title = preg_replace('/<a([^>]+)>([a-zA-Z]+)\s/i', '<a$1><span>$2</span> ', $title);

  return $title;
裸钻 2024-09-21 15:00:11

将其添加到主题中的functions.php 文件中:

// Adds span around the first word of post titles
if ( ! is_admin(false) ) {
add_action('brentini_span_post_title');
function brentini_span_post_title($span_title) {
$span_title = preg_replace('/(^[A-z0-9_]+)\s/i', '<span>$1</span> ', $span_title);
return $span_title;
}
add_filter('the_title', 'brentini_span_post_title');
} 
elseif ( ! is_admin(true) ) {
remove_filter('the_title', 'brentini_span_post_title');
}

例如,前端的输出将如下所示:

<h2 class="entry-title"><a href="#"><span>Welcome</span> to Wordpress</a></h2>

但在查看帖子表时,后端不会受到影响。

然后,您可以在 style.css 中对其进行样式设置,例如:

h2.entry-title span {color:#0531C2}

编辑: 添加 if else 语句,仅调整前端主题的格式,而不调整后端主题。似乎工作得很好。如果有更好的方法,我很想听听,谢谢!

Add this to your functions.php file in your theme:

// Adds span around the first word of post titles
if ( ! is_admin(false) ) {
add_action('brentini_span_post_title');
function brentini_span_post_title($span_title) {
$span_title = preg_replace('/(^[A-z0-9_]+)\s/i', '<span>$1</span> ', $span_title);
return $span_title;
}
add_filter('the_title', 'brentini_span_post_title');
} 
elseif ( ! is_admin(true) ) {
remove_filter('the_title', 'brentini_span_post_title');
}

The output on the frontend for instance, will look like this:

<h2 class="entry-title"><a href="#"><span>Welcome</span> to Wordpress</a></h2>

But it won't be affected on the backend while viewing the posts table.

And then you can style it in your style.css like this for instance:

h2.entry-title span {color:#0531C2}

EDIT: added if else statement to adjust formatting for frontend theme only without adjusting backend theme. Seems to work just fine. If there is a better way, I'd love to hear it, Thanks!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文