Inhalt
Auf mehrsprachigen Websites gibt es oft Anwendungsfälle, bei welchen bestimmte Elemente abhängig von der Sprache angezeigt oder ausgeblendet werden sollen. Je nach Plugin gibt es hier unterschiedliche Möglichkeiten das zu erreichen. In diesem Beitrag geht es explizit um die Umsetzung einer TranslatePress Condition für Breakdance.
Anzeige abhängig von der URL
Eine Möglichkeit das mit den Bordmitteln von Breakdance zu erreichen ist es, über Conditions die URL abzurufen und zu überprüfen, ob ein bestimmter Language-Code im String existiert. Beispielsweise könnte man überprüfen, ob sich der String „/en/“ in der URL befindet und abhängig davon, das Element ein oder ausblenden.
TranslatePress Shortcodes nutzen
TranslatePress bietet hierfür auch Shortcodes welche eingesetzt werden können. Dazu fügt man alle Inhalte, welche ein-/ausgeblendet werden sollen, in den Shortcode ein und passt die entsprechenden Parameter an.
[trp_language language="fi"] English content only [/trp_language]
Custom TranslatePress Breakdance Condition
Die eleganteste Art dein Ziel zu erreichen ist es, eine eigene Condition für TranslatePress zu Breakdance hinzuzufügen. Dazu kannst du folgenden PHP-Code in deine Installation einfügen.
Nachdem du diesen Code eingefügt hat, taucht in den Breakdance Conditions die Custom Condition „TranslatePress“ auf. Hier werden alle Sprachen angezeigt, welche du eingerichtet hast. Wie von den anderen Breakdance Conditions gewohnt, kannst du hier die Condition auf Elemente anwenden. Die entsprechenden Elemente werden dann abhängig von der gewählten Sprache angezeigt, bzw. ausgeblendet.
<?php
add_action("breakdance_register_template_types_and_conditions", function () {
if (function_exists("trp_get_languages")) {
$lang_list_full = trp_get_languages();
$lang_list = array();
foreach($lang_list_full as $key => $value) {
$lang_list[] = $key;
}
\Breakdance\ConditionsAPI\register([
"supports" => ["element_display", "templating"],
"slug" => "TranslatePress4bd-condition", // MUST BE UNIQUE
"label" => "Language",
"category" => "TranslatePress",
"operands" => ["equals", "not equals"],
"values" => function () use ($lang_list) {
return [
[
"label" => "Language",
"items" => array_map(function ($lang) {
return [
"text" => $lang,
"value" => $lang,
];
}, $lang_list),
],
];
},
"allowMultiselect" => false,
"callback" => function (string $operand, $value) {
// Get the current language from TranslatePress
$current_lang = get_locale();
if ($operand === "equals") {
return $current_lang === $value;
}
if ($operand === "not equals") {
return $current_lang !== $value;
}
return false;
},
]);
}
});