WordPress: Ako pridať text pred vlastné pole k obsahu vlastného typu príspevku
vo WordPress, add_filter()
je funkcia používaná na pripojenie vlastnej funkcie alebo existujúcej funkcie WordPress ku konkrétnej akcii filtra. Filtre sú jedným z dvoch typov hákov, druhým sú akcie. Poskytujú spôsob, ako môžu funkcie upravovať údaje iných funkcií a sú základným kameňom funkčnosti pluginu WordPress.
Tu je základná syntax add_filter()
:
add_filter( string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1 )
Ako redakčný systém (CMS), WordPress bol navrhnutý ako každá iná platforma... či už ide o stránku, príspevok alebo dokonca vlastný príspevok, máte názov a obsah. Ale nie všetok obsah je obmedzený na tieto dve možnosti. Jedným z príkladov je akronym knižnicu, na ktorej som vyvinul Martech Zone. Skratka má tri prvky... samotná skratka, definícia ktorý ukazuje, čo skratka znamená, a jej vysvetlenie.
Dokázal som ľahko pridať vlastné pole pre definíciu pomocou MetaBox, ale toto vlastné pole nie je zverejnené na celej lokalite. Jedným zo spôsobov, ako to urobiť, by bolo vytvoriť vlastnú šablónu pre stránku archívu a jednej skratky, kde môžem extrahovať vlastné pole. Vyžaduje si to však dosť práce a musí sa to robiť všade, kde tieto informácie chcem – v archíve, samostatnom príspevku, úryvku a informačnom kanáli vlastného typu príspevku.
Alternatívou je použiť svoju tému a pridať tieto informácie do samotného obsahu. V tomto prípade chcem jednoducho pridať krátku vetu: {title} je skratka pre {definition}. Pretože pre kódy používam aj knižnicu akronymov, chcem tiež upraviť predpridaný text, ak je kód číselný: {title} je kód pre {definition}. Tu sú príklady:
0p je skratka pre Zero Party a 404 je kód pre Nenájdené.
Na tento účel môžem použiť add_filter pre koncept, úryvok, informačný kanál a RSS na pridanie vhodného textu. Okrem toho skontrolujem, či je skratka číselná... v takom prípade je to pravdepodobne kód. (Uvedomujem si, že by som to mohol ešte vylepšiť, ale zatiaľ je to v poriadku). V rámci functions.php súbor môjho
dieťa tému, jednoducho pridám nasledujúcu funkciu a potom zavolám príslušné filtre, aby som ju použil na celom webe:// 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;
}
Teraz, keď vidíš moje akronym archív, uvidíte, že každý záznam má v úryvku predponu túto vetu. A je to samostatný odsek na stránke jednotlivých príspevkov.