Beispiel: {{theme.company_info}} -> (Company Info – von Dashboard > Business Details
Beispiel: {{fn.get_the_title}} -> (Post Titel)
Requirements:
- Meta Box “Settings Page” Script von snippetclup > functions.php im Child oder WPCodeBox “MB Enable Dynamic Template Tags”
Aber es geht auch mit Groundhogg (“Replacement Code”), siehe Anleitung!
Use Case: Dynamische Anzeige von Custom Fields
Syntax innerhalb {{}}:
theme: Hier sagen wir, von wo der tag geholt werden soll /fnfür Postcompany_info: Der Wert unter diesem Parameter soll angezeigt werden /get_the_titlefür Post-Titel
Nachfolgend beschreibe ich die Optionen je mit einem Beispiel, ansonsten auch hier beschrieben.
field – Gets the custom fields from the current post. Replace field_name with the name of your field: field.fieldname
theme – Gets the custom fields from an options page. Replace field_name with the name of your field. Daten von der MB Settings Page mit MB Custom Fields, deren ID im 2. Teil eingefügt werden). Beispiel: Company Info mit Kontakten, Öffnungszeiten etc: theme.company_info
query – Daten aus der URL anzeigen, die beim Ausfüllen eines Formulares oder anderen Quellen übergeben werden (z.B. Query Parameter “clientname”). Beispiel: Thank-You Page mit persönlicher Anrede, z.B. “Danke, Name!”: query.clientname
hook – Content (z.B. über GP Block-Elements) an beliebigen Stellen einfügen. Hiermit können die vom Theme bereitgestellten Hooks ergänzt werden. Das Block-Element muss als Custom Hook angelegt werden (z.B. demo_cta) > hook.demo_cta
Weitere Optionen:
- fn
- field
- user
- userm
- author
Code Snippet
Gesperrt. Das Code-Snippet steht entweder durch einen Einzelkauf oder über unsere Mitgliedschaft zur Verfügung.
Code
/*
* tct_template_tags
*
* @function Automatically calls template tags
* @author Taylor Drayson
* @since 26/03/2023
*/
add_filter("render_block", "tct_template_tags", 10, 2);
function tct_template_tags($block_content, $block){
$prefixes = ['fn', 'query', 'theme', 'field', 'user', 'userm','author', 'hook'];
$pattern = '/{{('. implode('|', $prefixes) .')\.(\w+)}}/';
$new_content = preg_replace_callback($pattern, function($matches) {
$dynamic_tag = trim($matches[2]);
switch($matches[1]){
case 'fn':
if(!function_exists($dynamic_tag)) return;
return call_user_func($dynamic_tag);
break;
case 'query': // Query param
return isset($_GET[$dynamic_tag]) ? sanitize_text_field($_GET[$dynamic_tag]) : '';
break;
case 'theme': // Settings page
if(!function_exists('rwmb_meta')) break;
return rwmb_meta($dynamic_tag, ['object_type' => 'setting'], 'business-details');
break;
case 'field': // Metabox Field
if(!function_exists('rwmb_meta')) break;
return rwmb_meta($dynamic_tag, [], get_the_ID());
break;
case 'user': // Supported user info https://tct.so/User-info
$current_user = wp_get_current_user();
return $current_user->$dynamic_tag;
break;
case 'userm': // User meta
$user_id = get_current_user_id();
return get_user_meta($user_id, $dynamic_tag, true);
break;
case 'author': // Supported author info https://tct.so/author-values
return get_the_author_meta($dynamic_tag);
break;
case 'hook':
ob_start();
do_action( $dynamic_tag );
return ob_get_clean();
break;
}
// Otherwise, return the original text
return $matches[0];
}, $block_content);
return $new_content;
}