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. Абрэвіятура складаецца з трох элементаў… сама абрэвіятура, а вызначэнне які паказвае, што азначае абрэвіятура, і яе тлумачэнне.
Мне ўдалося лёгка дадаць карыстацкае поле для вызначэння з дапамогай MetaBox, але гэта карыстальніцкае поле не апублікавана на ўсім сайце. Адным са спосабаў зрабіць гэта было б стварыць карыстальніцкі шаблон для архіва і старонкі з адной абрэвіятурай, дзе я магу атрымаць карыстацкае поле. Тым не менш, гэта патрабуе даволі шмат працы і павінна быць зроблена ўсюды, дзе я хачу атрымаць інфармацыю - у архіве, асобным паведамленні, урыўку і стужцы карыстальніцкага тыпу паведамленняў.
Альтэрнатывай з'яўляецца выкарыстанне вашай тэмы і даданне гэтай інфармацыі да самога кантэнту. У гэтым выпадку я проста хачу дадаць кароткі сказ: {title} - гэта абрэвіятура {definition}. Паколькі я таксама выкарыстоўваю бібліятэку абрэвіятур для кодаў, я таксама хачу змяніць дададзены тэкст, калі код лічбавы: {title} - гэта код для {definition}. Вось прыклады:
0p - абрэвіятура Zero Party і 404 - код для "Не знойдзена"..
Каб зрабіць гэта, я магу выкарыстаць 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;
}
Цяпер, калі вы бачыце мой акронім архіў, вы ўбачыце, што перад кожным з запісаў ва ўрыўку стаіць гэты сказ. І гэта асобны абзац на старонцы асобных паведамленняў.