cum să obții ID-ul unei pagini folosind slug-ul paginii

13 iun. 2013, 13:53:37
Vizualizări: 159K
Voturi: 52

Sunt destul de nou în WordPress și mă întrebam dacă aș putea obține un page id folosind slug-ul paginii. Este posibil acest lucru, vă rog să mă ajutați?

0
Toate răspunsurile la întrebare 7
6
76

Utilizează get_page_by_path($page_path):

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

Aceasta va returna un obiect post obișnuit.
Documentație:
https://developer.wordpress.org/reference/functions/get_page_by_path/
https://developer.wordpress.org/reference/functions/get_the_title/

13 iun. 2013 13:57:54
Comentarii

Dar dacă vreau ID-ul unei pagini copil?

freaky freaky
13 iun. 2013 14:10:24

@freaky Funcția acceptă doar slug-ul paginii, nu slug-ul părintelui. Deoarece slug-urile sunt unice, vei obține întotdeauna doar o singură pagină.

fuxia fuxia
13 iun. 2013 14:12:26

Mulțumesc, funcționează, iar pentru pagina copil a trebuit să navighez astfel: $page = get_page_by_path( 'about/child' );

freaky freaky
13 iun. 2013 14:15:38

Doar pentru a clarifica, get_page_by_path folosește intern câmpul post_name, nu post_slug.

colefner colefner
9 apr. 2018 22:04:07

Doar pentru a fi clar, aceasta folosește calea paginii și nu numele paginii, corect? Deci pentru o pagină numită "Despre noi", argumentul ar trebui să fie "despre-noi", corect? fără slash-uri la început sau la sfârșit?

user658182 user658182
25 iul. 2018 19:01:46

Da, @user658182

fuxia fuxia
25 iul. 2018 21:57:30
Arată celelalte 1 comentarii
2
23

Am folosit această funcție ...

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

Sper că va fi utilă pentru cineva.

13 mar. 2015 13:38:53
Comentarii

De ce să-l încadrezi într-o funcție? get_page_by_path deja returnează null …

GDY GDY
1 mar. 2019 09:42:10

Pentru că întrebarea OP vrea să returneze ID-ul, nu obiectul paginii.

user1158023 user1158023
16 oct. 2019 17:34:01
0
11

Această întrebare a fost deja adresată și răspunsă pe acest forum. Voi repeta același cod de acolo. Folosiți această funcție pentru a obține ID-ul paginii.

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; 
  }
13 iun. 2013 14:06:53
0

Există o funcție url_to_postid încă din WordPress v1.0.0 :) Această sarcină se realizează cel mai ușor folosind această funcție.

url_to_postid

Când pagina este o pagină de nivel superior, trebuie furnizat doar slug-ul.

ex. url_to_postid('slug');

Când pagina se află într-un nivel ierarhic inferior (adică are un părinte), trebuie să adăugați slug-ul părintelui, separați prin slash, astfel:

url_to_postid('parent-slug/child-slug');

Editare: dacă aceasta returnează 0, ar trebui să resetați legăturile permanente (deschideți pagina de legături permanente din administrarea WordPress) - acest lucru este necesar doar o singură dată

1 sept. 2020 00:05:35
0

Am avut probleme cu răspunsul ales atunci când am încercat să folosesc codul de mai multe ori pe aceeași pagină. Continuam să afișez tot conținutul paginilor mele simultan în fiecare instanță. Așa că m-am întors la gândire și am venit cu această abordare mai simplă bazată pe documentația din WordPress Codex:

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

Poate încă mai poate fi util cuiva acolo ;D

8 oct. 2016 18:20:51
0

Multe răspunsuri de aici par excesiv de complexe sau nu descriu cum să obții în mod specific ID-ul paginii.

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

În descrierea de mai sus, am atribuit obiectul postării variabilei $page. Odată ce ai obiectul postării, poți obține oricare dintre informațiile descrise aici: https://codex.wordpress.org/Class_Reference/WP_Post

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

și multe altele

6 apr. 2019 00:47:07
0
<?php  function get_page_ID_by_slug( $slug ) {
    $page = get_page_by_path( $slug );
    if ( $page ) {
        return (int) $page->ID;
    }
    else {
        return null;
    }
}
?>

Sper că această sugestie este utilă pentru cineva.

31 mai 2018 13:18:08