You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何在WordPress中用PHP和HTML按连字符拆分文章标题

解决WordPress标题按连字符拆分的问题

原代码的问题

  1. 分隔符不统一:第一次调用strtok用的是短横'-',第二次却用了长横'–',直接导致拆分逻辑失效
  2. strtok的适配性差:strtok按单个字符分割,若标题里有多个短横会拆分出多段,还没法处理连字符前后的空格,满足不了你只拆成歌手、歌曲名两部分的需求

修正后的代码

改用explode()替代strtok,它能精准匹配包含空格的完整分隔符,还能限制仅拆分一次,更适配你的场景:

<?php
global $my_query;
$post_number = ($my_query->current_post + 1);
$zero_padding = str_pad($post_number, 2, '0', STR_PAD_LEFT);
?>

<?php
$title = get_the_title();
// 按"空格-空格"的格式拆分标题,仅拆分1次得到两部分
$title_parts = explode(' - ', $title, 2);
// 兼容标题格式不符合的情况,避免报错
$artist = isset($title_parts[0]) ? trim($title_parts[0]) : $title;
$song = isset($title_parts[1]) ? trim($title_parts[1]) : '';
?>
        
<div class="col center-elements-top10">
  <div class="img-top10" style="background-image: url(<?php the_post_thumbnail_url() ?>)!important;"></div>
    <div class="div-titles">
    <h5 class="number-top10"><?php echo $zero_padding; ?></h5>
  <div>
    <h6 class="mt-2 titles-top10"><?php echo $artist; ?></h6>
    <h5 class="mt-2 titles-top10"><?php echo $song; ?></h5>
  </div>
</div>

关键说明

  • explode(' - ', $title, 2):第一个参数对应你标题里实际的分隔符(空格+短横+空格),第三个参数2限制仅拆分一次,确保不管标题里有没有其他短横,都只会得到歌手和歌曲名两部分
  • trim():去除拆分后内容前后的多余空格,避免显示时出现留白
  • isset()判断:如果标题没有符合要求的分隔符,会直接把完整标题作为歌手名,歌曲名留空,避免页面报错

内容的提问来源于stack exchange,提问作者Daniel Martins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 05:26:14