Afișează conținut dacă pagina părinte are pagini copil

22 nov. 2012, 15:16:25
Vizualizări: 23.4K
Voturi: 3

Folosind această bucată de cod poți afișa conținut diferit în funcție de tipul paginii (părinte sau copil):

<?php
global $post;

if ( is_page() && $post->post_parent ) : ?>
Aceasta este o pagină copil.

<?php else : ?>
Aceasta este o pagină părinte.

<?php endif; ?>

Dar aș dori să adaug încă o condiție, astfel încât să pot avea conținut diferit dacă este o pagină părinte care are un copil sau o pagină părinte care nu are. Ar funcționa ceva de genul acesta? Dacă da, ce ar trebui să fie "XXX"?

<?php
global $post;

if ( is_page() && $post->post_parent ) : ?>
Aceasta este o pagină copil.

<?php elseif ( is_page() && XXX ) : ?>
Aceasta este o pagină părinte (cu unul sau mai mulți copii)

<?php else : ?>
Aceasta este o pagină părinte fără copii.

<?php endif; ?>

Mulțumesc anticipat!

0
Toate răspunsurile la întrebare 3
0

Am folosit în final acest cod:

<?php
global $post;
$children = get_pages( array( 'child_of' => $post->ID ) );

if ( is_page() && $post->post_parent ) : ?>
Aceasta este o pagină copil.

<?php elseif ( is_page() && count( $children ) > 0 ) : ?>
Aceasta este o pagină părinte (cu unul sau mai mulți copii)

<?php else : ?>
Aceasta este o pagină părinte fără copii.

<?php endif; ?>
22 nov. 2012 18:54:53
3

De asemenea, poți crea propria ta condiție condițională. În functions.php adaugă:

function my_is_parent() {
    global $post;

    $children = get_pages('child_of='.$post->ID);
    if( count( $children ) > 0 ) {
        $parent = true;
    }

    return $parent;
}

Și în condiția ta IF în loc de XXX adaugă: my_is_parent()

Desigur, poți denumi funcția altfel decât "my_is_parent" dacă dorești. Nu sunt sigur în privința acestui aspect, dar cred că nu ar fi prea sigur să folosești "is_parent" în cazul în care această funcționalitate ar fi inclusă în nucleul WordPress într-o zi.

22 nov. 2012 15:55:23
Comentarii

Nu ar trebui să returneze $parent = true, o valoare booleană în loc de text?

Trevor Trevor
8 sept. 2015 04:51:07

@Trevor da, ai dreptate. Deși funcționează și cu valoarea text, am actualizat acum acest răspuns vechi de 3 ani :)

jzatt jzatt
8 sept. 2015 11:04:49

Încă un răspuns valid după 7 ani.

Clarus Dignus Clarus Dignus
14 apr. 2019 16:21:53
2

poți realiza acest lucru folosind

global $post;

$args = array (
    'parent' => $post->ID
);

$children = get_pages( $args );

if ( is_page() && $post->post_parent ) : ?>
Aceasta este o pagină copil.

<?php elseif ( is_page() && count( $children ) > 0 ) : ?>
Aceasta este o pagină părinte (cu unul sau mai mulți copii)

<?php else : ?>
Aceasta este o pagină părinte fără copii.

<?php endif; ?>

și folosind count( $children ) > 0 în loc de XXX

22 nov. 2012 15:33:41
Comentarii

Poți să arăți codul complet? Mulțumesc!

nicolas nicolas
22 nov. 2012 16:01:49

Salut @nicolas, am completat codul integral pentru tine.

fischi fischi
22 nov. 2012 18:17:10