Czy możliwe jest uzyskanie bezpośredniego linku strony z samego ślimaka? Wiem, że można uzyskać bezpośredni link do strony z identyfikatora za pomocą get_page_link()
:
<a href="<?php echo get_page_link(40); ?>">Map</a>
Jestem ciekawy, czy jest jakiś sposób, aby zrobić to samo z kopią strony - na przykład:
<a href="<?php echo get_page_link('map'); ?>">Map</a>
permalinks
pages
slug
Sampson
źródło
źródło
get_permalink(get_page_by_path('contact')->ID));
?get_page_by_path()
zwraca tablicę wszystkich informacji o stronie.get_permalink()
przyjmuje identyfikator strony jako pierwszy argument. Pomyślałem, że muszę jawnie przekazać wartość identyfikatora.Myślę, że może być lepiej:
zgodnie ze wzorem „oryginalnego”
get_page_by_title
wordpress . (linia 3173)rgds
źródło
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_page($page, $output); return null; }
\WP_Post
, która rozwiązuje się bezpośrednio we wszystkich funkcjach wordpress, które sprawdzają inne wartości.\WP_Post
zapewnia również metody bezpośredniego wyszukiwania najbardziej powiązanych danych o poście.Oto metoda opublikowana przez Toma McFarlina na jego blogu :
Działa z niestandardowymi typami postów i wbudowanymi typami postów (takimi jak
post
ipage
).źródło
zaakceptowana odpowiedź jest błędna, ponieważ strony hierarchiczne tak nie działają. Mówiąc prosto, ślimak nie zawsze jest ścieżką strony lub postu. Np. Twoja strona ma dziecko itp. Ścieżka będzie
parent-slug/child-slug
iget_page_by_path
nie uda się jej znaleźćchild-slug
. Prawidłowe rozwiązanie jest następujące:źródło
Spróbuj tego:
get_page_by_path( 'path' )
zwraca obiekt strony / postu, z którego może następnie skorzystać,get_page_link()
ponieważ akceptuje obiekt post / strony i zwraca link bezpośredni.źródło
Użyj tej funkcji do
źródło