Un utente ha chiesto informazioni su Events Manager di Wordpress

Problema con il titolare condizionale per il campo di personalizzazione del sito

Un utente ha chiesto 👇

Ho utilizzato la seguente funzione in functions.php per visualizzare l’attributo #_LATT {gomap-link} nella pagina del sito solo se l’attributo è impostato:

function filterLocationOutputCondition($replacement, $condition, $match, $EM_Location){
    if (is_object($EM_Location)) {
 
        switch ($condition) {
 
            // replace LF with HTML line breaks
            case 'nl2br':
                // remove conditional
                $replacement = preg_replace('/{/?nl2br}/', '', $match);
                // process any placeholders and replace LF
                $replacement = nl2br($EM_Location->output($replacement));
                break;
 
            // #_ATT{gomap-link}
            case 'has_gomap-link':
                if (is_array($EM_Location->location_attributes) && !empty($EM_Location->location_attributes['gomap-link']))
                    $replacement = preg_replace('/{/?has_gomap-link}/', '', $match);
                else
                    $replacement = '';
                break;
        }
    }
    return $replacement;
}
 
add_filter('em_location_output_condition', 'filterLocationOutputCondition', 10, 4);

Purtroppo non fa quello che mi aspettavo. Utilizzo il seguente codice nelle impostazioni del plugin (Formati / Impostazioni):

{has_gomap-link}<a href="#_LATT{gomap-link}">PokemonGoMap.info</a><br/>{/has_gomap-link}

ciò che viene mostrato come risultato è:

{has_gomap-link} PokemonGoMap.info
{/ has_gomap-link}

Dov’è il mio errore?
Grazie in anticipo
Burkhard

Questo argomento è stato modificato 2 anni, 6 mesi fa da.

(@duisterdenhaag)

2 anni, 6 mesi fa

Ciao, utente EM anche qui 🙂

Personalmente ho sempre avuto problemi a creare residenti condizionali con {}. Quindi di solito creo un normale occupante con una condizione if / else. L’ho provato per te e funziona:


function my_em_placeholder_mod($replace, $EM_Location, $result){
if ( $result == '#_GOMAP' ) {
		if( !empty( $EM_Location->output("#_LATT{gomap-link}" ) ) ){
			$replace = '<a href="#_LATT{gomap-link}">PokemonGoMap.info</a><br/>';
		} 
		else {
			$replace = '';
		}
	}
	return $replace;
}
add_filter('em_location_output_placeholder','my_em_placeholder_mod',1,3);

Quindi usa #_GOMAP invece vai a {has_gomap-link}… {/ has_gomap-link}. Il segnaposto controllerà lo stesso #_GOMAP se ha bisogno di produrre qualcosa 🙂

Lanciatore di thread

(@ bk14165)

2 anni, 6 mesi fa

Ciao Patrick,
Grazie mille. Ha funzionato per me, ma ho dovuto scrivere


if ( $result == '#_GOMAP' ) {
		if( !empty( $EM_Location->output("#_LATT{gomap-link}" ) ) ){
			$replace = '<a href="' . $EM_Location->output("#_LATT{gomap-link}") . '">PokemonGoMap.info</a><br/>';;
		} 
		else {
			$replace = '';
		}

Ti auguro il meglio
Burkhard

(@duisterdenhaag)

2 anni, 6 mesi fa

Sei il benvenuto 🙂

Ah, immagino che la differenza dipenda da dove usi l’occupante. A quanto pare la tua versione ha più “prova di tutto”. LOL. 🙂

Was this helpful?

0 / 0

Lascia un commento 0

Your email address will not be published. Required fields are marked *