WordPress: как подготовить текст с настраиваемым полем для содержимого пользовательского типа записи |  Зона Мартех

WordPress: как подготовить текст с настраиваемым полем для содержимого пользовательского типа записи | Зона Мартех

в Вордпресс, add_filter() — это функция, используемая для присоединения пользовательской функции или существующей функции WordPress к определенному действию фильтра. Фильтры — это один из двух типов хуков, второй — действия. Они предоставляют функциям возможность изменять данные других функций и являются краеугольным камнем функциональности плагинов WordPress.

Вот основной синтаксис add_filter():

add_filter( string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1 )

В качестве системы управления контентом (CMS), WordPress спроектирован так же, как и любая другая платформа… Будь то страница, пост или даже пользовательский пост, у вас есть заголовок и контент. Но не весь контент ограничивается этими двумя вариантами. Одним из примеров является акроним библиотека, которую я разработал в Martech Zone. Аббревиатура состоит из трех элементов: сама аббревиатура, определение это показывает, что означает аббревиатура, и ее объяснение.

Я мог бы легко добавить настраиваемое поле для определения с помощью МетаБокс, но это настраиваемое поле не публикуется на всей странице. Один из способов сделать это — создать собственный шаблон для архива и какую-нибудь страницу с аббревиатурой, где я могу распаковать настраиваемое поле. Однако это требует довольно много работы и должно быть сделано там, где мне нужна эта информация – в архиве, отдельном сообщении, выдержке и ленте пользовательского типа сообщения.

Альтернативой является использование вашей темы и представление этой информации в самом контенте. В этом случае я просто хочу создать короткое предложение: {title} является аббревиатурой от {definition}. Поскольку я также использую библиотеку акронимов для кодов, я также хочу изменить предшествующий текст, если код является числовым: {title} – это код {definition}. Вот примеры:

0p — это аббревиатура от Zero Party. и 404 — это код ошибки «Не найдено»..

READ  Кибератаки становятся все более дорогостоящими для жертв

Для этого я могу использовать add_filter для черновика, извлечения, ленты и RSS, чтобы поместить соответствующий текст впереди. Кроме того, я проверяю, является ли аббревиатура числовым… и в этом случае, вероятно, это код. (Я понимаю, что мог бы улучшить это дальше, но пока это хорошо). В рамках functions.php мой файл дочерняя темаЯ просто добавляю следующую функцию, а затем вызываю соответствующие фильтры, чтобы применить ее ко всей странице:

// Prepend text to the content of 'acronym' posts
add_filter('the_content', 'prepend_text_to_acronym');
add_filter('the_excerpt', 'prepend_text_to_acronym');
add_filter('the_content_feed', 'prepend_text_to_acronym');
add_filter('the_excerpt_rss', 'prepend_text_to_acronym');
function prepend_text_to_acronym($content) {
    global $post;

    // Check if it's an 'acronym' post
    if($post->post_type == 'acronym') {
        // Get the post title and the 'acronym_definition' field
        $title = get_the_title($post->ID);
        $definition = get_post_meta($post->ID, 'acronym_definition', true);

		if (is_numeric($title)) {
			$new_content = "<p>$title is the code for $definition.</p>";
		} else {
			$new_content = "<p>$title is the acronym for $definition.</p>";
		}

        // Prepend the new content to the original content
        $content = $new_content . $content;
    }

    return $content;
}

Ну, если ты увидишь меня Акроним архив, вы увидите, что эта фраза уже извлечена из каждой записи. И это отдельный абзац на странице с отдельными сообщениями.

Source