Как автоматически добавлять идентификаторы в заголовки с помощью functions.php в Wordpress - PullRequest
1 голос
/ 25 марта 2019

Мне интересно, как я мог бы реализовать уникальные идентификаторы для каждого элемента заголовка в посте (исключая страницы) в Wordpress. То есть, если два заголовка идентичны, они должны получить разные идентификаторы. Идентификаторы также должны быть описательными. Штриховая версия фактического текста заголовка великолепна.

Я нашел этот код в Интернете:

// This function adds nice anchor with id attribute to our h2 tags for reference
// @link: http://www.w3.org/TR/html4/struct/links.html#h-12.2.3

function anchor_content_h2($content) {

    // Pattern that we want to match
    $pattern = '/<h2>(.*?)</h2>/';

    // now run the pattern and callback function on content
    // and process it through a function that replaces the title with an id 
    $content = preg_replace_callback($pattern, function ($matches) {
                $title = $matches[1];
                $slug = sanitize_title_with_dashes($title);
                return '<h2 id="' . $slug . '">' . $title . '</h2>';
            }, $content);
    return $content;
}

add_filter('the_content', 'anchor_content_h2');

Меня беспокоит то, что два одинаковых заголовка получат одинаковый идентификатор. Это также работает только для H2-элементов. Есть ли лучший способ сделать то, что я хочу, или это вообще не очень разумно для реализации?

1 Ответ

1 голос
/ 25 марта 2019

Есть много способов сделать это, но если вы используете post_name, вы получите уникальное пунктирное и описательное значение. https://codex.wordpress.org/Class_Reference/WP_Post#Member_Variables_of_WP_Post

Если бы это был я, я бы, вероятно, выбросил приведенный ниже код в соответствующий файл шаблона.

the_title( '<h2 class="' . get_post_field( 'post_name', get_post() ) . '">', '</h2>'  );

РЕДАКТИРОВАТЬ - То есть каждый h2 не привязан к сообщению? Вы можете просто добавить $ slug с уникальным идентификатором.

$slug = sanitize_title_with_dashes($title) . '-' . uniqid();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...