Я хотел разделить заголовок сообщения 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, '-');
, но все равно не работает.
Что значит «не могу заставить это работать»? Что он делает сейчас, что не «работает»?
Я уже пробовал взорвать, тоже не помогло.
Это не разделение, как я хотел. Но если я отредактирую название на «Charli XCX ft. Billie Eilish-Guess», это сработает. Но я хочу с пробелом между дефисом, как в «Charli XCX ft. Billie Eilish — Guess».
начните с добавления одного недостающего закрывающего тега </div>
:
<div class = "div-titles">
вроде не закрыто.
Он закрыт, просто забыл сюда скопировать.
Я попытался изменить код и исправить заголовок, например: «$title = «Charli XCX ft. Billie Eilish – Guess»;», и это сработало, но когда я изменил на «$title = get_the_title» ();" перестает делиться
@DanielMartins, очевидно, потому, что он не видит определения get_the_title(). В качестве теста вы можете попробовать определить его внутри того же файла. Я не уверен на 100%, но возможно, вам придется использовать jquery для выполнения get_the_title изнутри .html.
я уже решил это, мне пришлось изменить $title = get_the_title();
на $title = get_post()->post_title;
я уже решил это, мне пришлось изменить $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
?>
Пробовали взорваться?