Разделите заголовки знаком «-» в Wordpress

Я хотел разделить заголовок сообщения Wordpress дефисом в PHP и HTML на странице Wordpress для разных элементов div.

Вот пример названия, которое я хочу разделить: «Charli XCX ft. Billie Eilish — Guess». Я хочу отделить "Charli XCX ft. Billie Eilish" от "Guess".

Вот код, который я использую, и который я не могу заставить работать.

<?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(); // Get the title string
$token = strtok($title, '-'); // Split the title by the " – " separator
$artist = $token; // Get the artist
$song = strtok('–'); // Get the song title
?>
        
<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>

Я уже поменял $token = strtok($title, '-');, но все равно не работает.

Пробовали взорваться?

Chris Haas 29.08.2024 05:23

Что значит «не могу заставить это работать»? Что он делает сейчас, что не «работает»?

maiorano84 29.08.2024 05:59

Я уже пробовал взорвать, тоже не помогло.

Daniel Martins 31.08.2024 20:34

Это не разделение, как я хотел. Но если я отредактирую название на «Charli XCX ft. Billie Eilish-Guess», это сработает. Но я хочу с пробелом между дефисом, как в «Charli XCX ft. Billie Eilish — Guess».

Daniel Martins 31.08.2024 21:16
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
4
54
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

начните с добавления одного недостающего закрывающего тега </div>:

<div class = "div-titles">

вроде не закрыто.

Он закрыт, просто забыл сюда скопировать.

Daniel Martins 31.08.2024 20:32

Я попытался изменить код и исправить заголовок, например: «$title = «Charli XCX ft. Billie Eilish – Guess»;», и это сработало, но когда я изменил на «$title = get_the_title» ();" перестает делиться

Daniel Martins 31.08.2024 21:01

@DanielMartins, очевидно, потому, что он не видит определения get_the_title(). В качестве теста вы можете попробовать определить его внутри того же файла. Я не уверен на 100%, но возможно, вам придется использовать jquery для выполнения get_the_title изнутри .html.

mrd83 02.09.2024 11:44

я уже решил это, мне пришлось изменить $title = get_the_title(); на $title = get_post()->post_title;

Daniel Martins 02.09.2024 14:04
Ответ принят как подходящий

я уже решил это, мне пришлось изменить $title = get_the_title(); на $title = get_post()->post_title;

в итоге это выглядит так:

<?php
$title = get_post()->post_title; // Get the title string
$parts = explode(' - ', str_replace('–', '-', $title)); // Replace em dash with en dash and split the title

$artist = trim($parts[0]); // Get the artist and trim any extra spaces
$song = trim($parts[1]); // Get the song title and trim any extra spaces
?>

Другие вопросы по теме