is_child () существуют в wp 3.5.1?

Я пытаюсь выяснить, как стать к is_child () эквивалентным; я хотел бы смочь быть нацеленным на родительскую страницу, и это - дети. Как это может быть достигнуто?

Мой псевдокод...

if (is_page('pagename') || is_child('pagename')) {...}

... однако, is_child (), кажется, не работает. Я хотел бы, чтобы это возвратило true.

0
30.05.2013, 01:47
3 ответа

Проверять на определенное родительское идентификационное использование $post->post_parent=="123" и замените "123" родительским идентификатором по Вашему выбору.

Я изучил, как сделать это при помощи плагина Логики Виджета. Из примечаний Логики Виджета:

global $post; return (is_page('pagename') || ($post->post_parent=="13")); - домашняя страница ИЛИ страница это - ребенок страницы 13

Править: Лучший источник Тестирует на подстраницы в кодексе.

0
19.02.2020, 23:38
  • 1
    я мог использовать его неправильно, но это также работает на страницы, не сообщения? Я пытаюсь уменьшить код как можно больше путем сжатия его в одно условное выражение..., если (is_page ('pagename') || ($post-> post_parent == 'pagename')) не возвратил ошибки, но также и не работал на дочерних страницах –  beta208 30.05.2013, 01:53
  • 2
    , Это может потребовать, чтобы Вы использовали фактический родительский идентификатор вместо pagename. Вы попробовали это? Также попытайтесь удалить круглую скобку вокруг ($post->post_parent=='pagename') поскольку они, кажется, не необходимы здесь. Посмотрите отрывок 3 в кодексе, который использует этот синтаксис if ( is_page( 'about' ) || '2' == $post->post_parent ) ---------121 Сообщение--------81257----@beta208 не имеет родителей, таким образом, это не имеет смысла для работать с сообщениями... –  Stephen Harris 30.05.2013, 02:01
  • 3
    Также попробованный, если (is_page ('pagename') || 'pagename' == $post-> post_parent) {...} Который не работал; я хотел бы использовать идентификатор, но я не вижу его. Когда я нажму Quickedit, см. заголовок, краткий заголовок, дату, автора, пароль, родителя, порядок и шаблон. –  beta208 30.05.2013, 02:04
  • 4
    Отрывок 3 похож на мое решение, может просто случиться так, что я должен найти эквивалент идентификатора для моих страниц –  beta208 30.05.2013, 02:07

Это проверит на descendancy, а не строгие отношения отцов и детей:

/**
 * Is the current page a descendent of page identified by the path (not slug).
 * A page is not a descendent of itself!
 * @param string $page_path The path of the page, e.g. mypage/mysubpage 
 * @return boolean True if current page is a descednent of specified $page_path. False otherwise.
 */
function is_descendent_of( $page_path ){

    if( !is_page() ){
        return false;
    }

    $ancestors = get_post_ancestors( get_queried_object_id() );
    $page = get_page_by_path( $page_path );
    if( $page )
        return in_array( $page->ID, $ancestors );
    return false;   
}

И для строгой родительско-дочерней проверки:

/**
 * Is the current page a child of the page identified by the path (not slug).
 * A page is not a child of itself! Child != descendant.
 * @param string $page_path The path of the page, e.g. mypage/mysubpage
 * @return boolean True if current page is a child of specified $page_path. False otherwise.
 */
function is_child_of( $page_path ){

    if( !is_page() ){
        return false;
    }

    $page = get_page_by_path( $page_path );
    $current_page = get_post();

    if( $page )
        return $current_page->post_parent == $page->ID;
    return false;
}
4
19.02.2020, 23:38

Ища эту функцию для использования с Логикой Виджета я нашел этот отрывок, адаптировал рев:

/**
 * Check if a page is child of another 
 * 
 * @param mixed $page_id_or_slug Provide the parent ID or Slug
 * @return bool Whether the page is child or not of the given parent
 */
function is_child( $page_id_or_slug ) 
{ 
    global $post; 
    if( !is_page() )
        return false;

    # Slug provided, get ID
    if( !is_int( $page_id_or_slug ) ) 
    {
        $page = get_page_by_path( $page_id_or_slug );
        $page_id_or_slug = $page->ID;
    } 

    return $post->post_parent == $page_id_or_slug; 
}
1
19.02.2020, 23:38

Теги

Похожие вопросы