J'ai cet extrait dans un fichier "portfolio-loop.php". J'utilise get_template_part pour afficher la boucle sur la page d'accueil et sur d'autres pages.
J'ai ceci dans la boucle:
<?php if( !is_home() || !is_front_page() ) { ?>
<p><?php the_time('F Y'); ?></p>
<?php endif } ?>
Je n'arrive pas à le faire pour exclure la première page. Est-ce que ça pourrait être parce que c'est dans son propre modèle?
modifier
Ok, j'ai corrigé certaines de mes erreurs sémantiques grâce à s_ha_dum et Tom Nowell. J'ai essayé les variantes suivantes:
<?php if ( !is_home() && !is_front_page() ) { ?>
<!--nada -->
<?php } else { ?>
<p><?php the_time('F j, Y'); ?></p>
<?php } ?>
//dropping is_home() and trying to keep it as simple as possible
<?php if(!is_front_page()) { ?>
<p><?php the_time('F j, Y'); ?></p>
<?php } ?>
Je ne peux toujours pas cacher le temps sur la première page. Au mieux, '<- nada ->' apparaîtra à la fois sur ma page d'accueil (home.php) et sur mes archives (category-blog.php). Ma page de catégorie personnalisée est-elle également considérée comme une page d'accueil?
modifier 2
Ce que j'essaie de faire en clair:
J'ai une boucle sur ma page d'accueil (statique, home.php) affichant trois de mes derniers articles de blog via get_template_part. La même boucle est utilisée pour ma liste category-blog.php/archive mais affiche les 10 derniers articles. Je ne veux pas afficher la date/heure sur la page de garde pour que la disposition reste plus nette, uniquement sur les autres pages sur lesquelles cette boucle est affichée.
Voyons si je peux me confondre.
Si soit de vos deux conditions OR
est true
, le code est exécuté.
is_home
et is_front_page
peuvent renvoyer true
pour différentes pages, inversées dans votre cas. Si vous avez une page statique, ce qui semble être le cas, alors is_home
est la page d’index du blog.
Remarque: WordPress 2.1 gère cette fonction différemment des versions précédentes - Voir Page de garde statique. Si vous sélectionnez une page statique comme page d'accueil (voir is_front_page ()), cette balise sera appliquée à votre "page de messages".
Cela signifie que is_home
sera false
pour chaque page sauf votre index de blog, ce qui signifie que votre !is_home
conditionnel est true
pour chaque page sauf cette page d'index de blog et votre code s'exécutera presque tout le temps.
Maintenant la documentation pour is_front_page
.
Il renvoie VRAI lorsque la page principale du blog est affichée et que les affichages Paramètres-> Lecture-> Première page sont réglés sur "Vos derniers messages" ou lorsque "A page statique" et que la valeur "Page de garde" est la La page actuelle est affichée.
Il existe deux possibilités en fonction de vos paramètres. Il peut renvoyer true
pour la page d'index de votre blog ou true
pour votre page statique. Je pense que vous avez une page de garde statique, donc is_front_page
renverra true
pour cette page et la condition !is_front_page
sera fausse. Parce que !is_home
est (probablement, si je vous suis) true
, le code est toujours exécuté.
Si vous souhaitez exclure <p><?php the_time('F Y'); ?></p>
de both de l'index du blog et de la page de couverture statique, annulez la totalité de l'instruction OR
:
if( !(is_home() || is_front_page()) )
Si l'un est true
alors le tout est false
.
Si vous souhaitez l'exclure uniquement de la page d'accueil, vous ne devriez pas du tout avoir besoin de la partie !is_home
.
Si vous utilisez &&
au lieu de ||
, alors is_home
et is_front_page
doivent être false
pour que le code soit exécuté. En d’autres termes, vous n’êtes pas sur l’index des blogs ni sur le front en même temps.
Avant de traiter votre problème principal, je dois signaler une erreur de syntaxe flagrante:
<?php if( !is_home() || !is_front_page() ) { ?>
<p><?php the_time('F Y'); ?></p>
<?php endif } ?>
Pourquoi la endif
est-elle là? Cela n'a aucun sens, et tout dans la programmation a un but/une raison. Vous pourriez aussi bien le changer en marigolds-potatoe-farm
, cela aura le même effet, celui d’une erreur fatale. Alors débarrassez-vous-en.
Ceci est la déclaration de base de if:
if ( this statement is true ) {
do this
} else {
do that
}
Il existe un raccourci pour if (): endif; etc, n'utilisez pas ceux-ci, ils sont plus problématiques à ce stade que ce qu'ils valent.
Tout cela aurait dû être saisi et mis en évidence par votre éditeur. Si ce n'était pas le cas, vous utilisez un programme d'édition incompétent. Allez chercher un éditeur avec l'auto-complétion d'accolade, PHP linting/vérification de la syntaxe, le codage en couleur et l'auto-complétion.
Les exemples incluent mais ne sont pas limités à:
Ne pas rendre les choses difficiles pour vous
if( !is_home() || !is_front_page() ) {
Est-ce en prose anglaise:
Si ce n'est pas la page d'accueil, faites ceci, faites-le aussi si ce n'est pas la page d'accueil
Donc si c'est la page d'accueil, ça le fera. Si c'est la page d'accueil, il le fera.
Ce que je crois que tu voulais dire c'est:
s'il ne s'agit ni de la page d'accueil ni de la page d'accueil, faites-le.
Lequel est:
if ( !( is_home() || is_front_page() ) ) {
Ou cela peut être écrit comme:
if ( !is_home() && !is_front_page() ) {
Ou plus loin encore:
if ( !is_home() ) {
if ( !is_front_page() ) {
Si le but est tel:
Je ne veux pas afficher la date/heure sur la page de garde pour que la disposition reste plus nette, uniquement sur les autres pages sur lesquelles cette boucle est affichée.
Ensuite, vous devriez pouvoir utiliser un conditionnel simple:
<?php if ( ! is_front_page() ) { ?>
<p><?php the_time('F Y'); ?></p>
<?php } ?>
Sans savoir exactement ce que vous essayez d'accomplir, il n'est pas vraiment possible de fournir la déclaration conditionnelle exacte dont vous avez besoin. Cela dit, voici les conditions dans lesquelles/ou/les deux is_home()
et is_front_page()
seront vrais et/ou faux).
is_home()
est vrai lorsque Blog Posts Index est affiché, que ce soit sur la page d'accueil du site ou sur une page statique désignée.is_front_page()
est vrai lorsque la page d'accueil du site est affichée, que la page d'accueil du site affiche l'index des articles de blog ou une page statique désignée.Lorsque la page d'accueil Site est définie pour afficher l'index articles de blogues:
'posts' == get_option( 'show_on_front' )
is_home()
et is_front_page()
sont true lorsque la première page de l'index des articles de blog est affichée.is_home()
et is_front_page()
sont tous deux trueis_home()
est true, et is_front_page()
est false, dans les pages suivantes (c'est-à-dire l'affichage paginé) de l'index des articles de blogLorsque la Site Front Page est configurée pour afficher une page statique:
'page' == get_option( 'show_on_front' )
is_home()
est false et is_front_page()
est true, sur la page de garde Site (c.-à-d. ID de page = get_option( 'page_on_front' )
)is_home()
est true et is_front_page()
est false, sur la page statique désignée pour afficher l'index Blog Posts (i.e. ID de page = get_option( 'page_for_posts' )
is_home()
et is_front_page()
sont false sur toutes les autres pagesJe suppose que is_home
et is_front_page
sont similaires à is_page
et que les likes de ce ne peuvent pas être utilisés dans The Loop .
Mon travail actuel, au moins, consiste à envoyer un variable à The Loop.
Donc, à titre d'exemple} _, disons que dans votre page d'accueil, vous avez une boucle de portefeuille ... peut-être quelque chose comme cette ligne ci-dessous:
get_template_part( 'loop', 'portfolio' );
Ajoutez une variable avant cette ligne et faites-la global pour pouvoir l'utiliser plus tard dans votre boucle, comme ceci:
global $hide_time;
$hide_time = true;
get_template_part( 'loop', 'portfolio' );
Ensuite, dans votre boucle , vous pouvez utiliser cette variable comme condition de votre boucle:
<?php
global $hide_time;
if( $hide_time != true ) { ?>
<p><?php the_time('F Y'); ?></p>
<?php } ?>
NOTE: la variable doit être global dans les deux fichiers.
Pourquoi ne pas simplement extraire le code du modèle et le brancher à partir de votre fichier de fonctions de thèmes enfants comme ceci:
add_action ( 'your_themes_hook', 'display_date_exclude_front_page' );
function display_date_exclude_front_page() {
if ( !is_front_page() ) {
echo the_time('F Y');
}
}
Remarque: N'oubliez pas de remplacer your_themes_hook par votre hook de thèmes ou par un hook WordPress.
is_front_page renvoie toujours la valeur true sur la page d'accueil.
is_home () renvoie true pour la page de messages, quel que soit l'endroit où il se trouve.
Cela peut être n'importe quelle page utilisant un modèle de page de blog ou la page d'accueil si vous utilisez le paramètre par défaut Paramètres de lecture sinon vous le modifiez ici.