Як отримати ідентифікатор сторінки за допомогою слугу сторінки


35

Я досить нова у wordpress, і мені було цікаво, чи зможу я отримати page idце slug? Чи можливо, будь ласка, дайте мені знати.

Відповіді:


47

Використання get_page_by_path($page_path):

$page = get_page_by_path( 'about' );
echo get_the_title( $page );

Це поверне звичайний об'єкт пошти.


Що робити, якщо це ідентифікатор дочірньої сторінки, який я хочу?
химерний

1
@freaky Функція приймає лише сторінки сторінки, а не батьківський. Оскільки слизи унікальні, ви завжди отримаєте лише одну сторінку.
fuxia

3
Дякую, що це працює, і для дочірньої сторінки мені довелося орієнтуватися як хіти$page = get_page_by_path( 'about/child' );
вигадливі

Просто для уточнення, get_page_by_pathвикористовує post_nameполе внутрішньо, а не post_slug.
colefner

Щоб зрозуміти, для цього використовується шлях до сторінки, а не назва сторінки, правильно? Тоді на сторінці під назвою "Про нас" аргументом має бути "про-нас", правильно? без початку чи задніх косих?
користувач658182

16

Я цим користуюся ..

function get_id_by_slug($page_slug) {
    $page = get_page_by_path($page_slug);
    if ($page) {
        return $page->ID;
    } else {
        return null;
    }
} 

Сподіваюся, що це комусь допоможе.


Навіщо вкручувати його у функцію? get_page_by_pathвже повертає нуль…
GDY

Оскільки ОП питання хоче повернути ідентифікатор, а не об’єкт сторінки.
користувач1158023

9

Про це вже запитували і відповіли на цьому форумі. Я вставляю звідти той же код. Використовуйте цю функцію для отримання ідентифікатора сторінки.

 function get_page_by_slug($page_slug, $output = OBJECT, $post_type = 'page' ) { 
  global $wpdb; 
   $page = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type= %s AND post_status = 'publish'", $page_slug, $post_type ) ); 
     if ( $page ) 
        return get_post($page, $output); 
    return null; 
  }

3

У мене виникли проблеми з обраною відповіддю при спробі використання коду кілька разів на одній сторінці. Він постійно відображав вміст моїх сторінок одночасно у кожному випадку. Тому я повернувся до роздумів і придумав цей простіший підхід, заснований на документації WordPress Codex :

<?php $query = new WP_Query( array( 'pagename' => 'about-me' ) );
        while ( $query->have_posts() ) {
        $query->the_post();
        echo '<h2>'. get_the_title() .'</h2>';
        the_content();
    }
    wp_reset_postdata();
?>

Можливо, це все ще може бути корисним для когось там; D


0
<?php  function get_page_ID_by_slug( $slug ) {
    $page = get_page_by_path( $slug );
    if ( $page ) {
        return (int) $page->ID;
    }
    else {
        return null;
    }
}
?>

Я сподіваюся, що ця пропозиція комусь корисна.


0

Тут багато відповідей, які здаються надто складними, або не описують, як конкретно отримати ідентифікатор сторінки.

            $page = get_page_by_path("your-page-slug");
            if ($page) {
                $page_id =  $page->ID;
                echo $page_id;
            }

У наведеному вище описі ми присвоїли об'єкт поштового зв’язку на сторінці $. Після отримання об'єкта публікації ви можете отримати будь-яку інформацію, описану тут: https://codex.wordpress.org/Class_Reference/WP_Post

            $page->ID
            $page->post_status
            $page->post_title

і багато іншого

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.