web-dev-qa-db-fra.com

Utiliser une instruction switch dans Wordpress

J'ai un morceau de texte dans une div que je veux changer sur chaque page de mon site web. Pour le moment, je ne suis pas sûr de la fonction que je devrais utiliser pour faire cela. Voici ce que j'ai jusqu'à présent ...

<?php
$page = is_page();
switch ($page){
case 'home':
$content = 'How much money....';
break;
case 'about':
$content = 'We design....';
break;
case 'services':
$content = 'At the....';
break;
case 'blog':
$content = 'Find out whats....';
break;
case 'portfolio':
$content = 'Unique, Beautiful....';
break;
case 'contact':
$content = 'Get in touch to....';
break;
case 'privacy-policy':
$content = 'How much money....';
break;
case 'terms-and-conditions':
$content = 'How much....';
break;      
}

echo '<div class="strapline strap">'.$content.'</div>';
?>

Ce code semble seulement prendre le premier cas pour chaque page. Quelqu'un sait comment je peux le faire passer complètement par le commutateur? Merci d'avance!!

1
krisscross90

Si vous souhaitez utiliser votre instruction switch, vous pouvez utiliser:

switch ($post->post_name){
    case 'home':
        $content = 'How much money....';
        break;
    case 'about':
        $content = 'We design....';
        break;
    case 'services':
        $content = 'At the....';
        break;
    case 'blog':
        $content = 'Find out whats....';
        break;
    case 'portfolio':
        $content = 'Unique, Beautiful....';
        break;
    case 'contact':
        $content = 'Get in touch to....';
        break;
    case 'privacy-policy':
        $content = 'How much money....';
        break;
    case 'terms-and-conditions':
        $content = 'How much....';
        break;      
}

echo '<div class="strapline strap">'.$content.'</div>';

Premier. Je suivrais @rrikesh approche d’utiliser if/else et d’utiliser is_page () correctement.

Mais ce code est vraiment inefficace. Si vous pouvez faire un test "is_page ()", alors vous êtes sur la page et avez accès à son contenu. Personnellement, j'ajouterais un champ personnalisé aux pages pour contenir $ content. Ensuite, sur les pages, vous pouvez simplement appeler le champ personnalisé

$content = get_post_meta($post->ID, 'content', true);
echo '<div class="strapline strap">'.$content.'</div>';

Vous pouvez utiliser un plugin gratuit tel que Champs personnalisés avancés pour ajouter rapidement un champ méta personnalisé à vos pages. Votre contenu est plus facile à organiser et à modifier ultérieurement.

3
Jake

Je suppose que vous devriez utiliser if et else au lieu d’un commutateur.

is_page vérifiera simplement si vous êtes sur une page et retournera true ou false. Il ne retournera pas le nom de votre page.

Qu'as tu besoin de faire:

if ( is_page('Home') ){
  #do home stuff
}
elseif( is_page ('about') ){
  #do other stuff
}
elseif( is_page('services'){
  #do services stuff
}

Regardez is_page pour connaître les paramètres que vous pouvez transmettre.

1
RRikesh

is_page() est une fonction booléenne, elle ne renvoie que vrai ou faux.

Vous pourriez trouver l’utilisation de $page = get_the_title() comme une alternative raisonnable.

0
Dominic