슬러그에서 페이지 링크를 얻을 수 있습니까?
6 대답
- 투표
-
- 2010-12-07
페이지에 대해 말하는 거 맞나요?게시물이 아닙니다.
원하는 내용이 맞습니까?
-
get_permalink( get_page_by_path( 'map' ) )
-
get_permalink( get_page_by_title( 'Map' ) )
-
home_url( '/map/' )
You're talking about Pages right? Not Posts.
Is this what you looking for:
get_permalink( get_page_by_path( 'map' ) )
get_permalink( get_page_by_title( 'Map' ) )
home_url( '/map/' )
-
`get_permalink (get_page_by_path ( 'contact')-> ID));`를 의미 했습니까?Did you mean `get_permalink(get_page_by_path('contact')->ID));`?
- 4
- 2010-12-07
- Sampson
-
음 아니?ID는 무엇입니까?hmmm nope? What's with the ID?
- 1
- 2010-12-08
- zeo
-
[`get_page_by_path ()`] (http://codex.wordpress.org/Function_Reference/get_page_by_path)는 모든 페이지 정보의 배열을 반환합니다.[`get_permalink ()`] (http://codex.wordpress.org/Function_Reference/get_permalink)는 페이지 ID를 첫 번째 인수로 사용합니다.ID 값을 명시 적으로 전달해야한다고 생각했습니다.[`get_page_by_path()`](http://codex.wordpress.org/Function_Reference/get_page_by_path) returns an array of all page information. [`get_permalink()`](http://codex.wordpress.org/Function_Reference/get_permalink) takes a page ID as the first argument. I thought I'd have to explicitly pass the ID value.
- 3
- 2010-12-08
- Sampson
-
@Jonathan : 항상 문서화되어 있지는 않지만 많은 WP 함수가 숫자 ID와 전체 게시물 개체를 인수로 허용합니다.@Jonathan: It's not always documented, but many WP functions accept both numeric ID's and full post objects as the argument.
- 10
- 2010-12-08
- Jan Fabry
-
get_page_by_path ()는 자식 페이지를 다룰 때 사용하기가 매우 복잡 할 수 있습니다.It seems that get_page_by_path() can be quite complicated to use when dealing with child pages...
- 1
- 2011-11-14
- Kaaviar
-
Kaaviar와 동의하면 아래 기능이 더 좋습니다.Agreed with Kaaviar, the function below is better.
- 0
- 2012-08-10
- Rezen
-
문제가없는 자식 페이지에 1을 사용합니다.나는 그것의 합병증을 정말로 보지 않는다.I use 1 for my child pages with no issue. I really don't see the complication with it.
- 0
- 2014-12-19
- Jeremy
-
home_url ( '/map/') 나와 함께 일했습니다.home_url( '/map/' ) worked with me
- 0
- 2017-04-15
- Shady Mohamed Sherif
-
오답입니다. 열반에 반대 투표하십시오.경로는 슬러그와 같지 않습니다.예 : 페이지에`abc`라는 상위 페이지가 있고 페이지 자체에는`123`의 슬러그가 있습니다.이제 경로는`abc/123`이고 슬러그는`123`입니다.이 오답을 제거하십시오.`get_page_by_path ( '123')`가 작동하지 않습니다.wrong answer, downvote to nirvana please. The path is not the same like the slug. Example: a page has a parent page called `abc` the page itself has a slug of `123`. The path now is `abc/123` the slug is `123`. Please remove this wrong answer. `get_page_by_path( '123' )` wont work.
- 1
- 2017-09-01
- Toskan
-
제 경우에는 첫 번째를 사용해야했는데 두 번째 항목 (get_page_by_title)이 유사한 (그러나 동일하지 않은) 슬러그로 다른 게시물 (페이지가 아님) 링크를 반환했기 때문에 제대로 작동했습니다.왜 이런 일이 일어 났는지 모르겠습니다.In my case I had to use the first one and it worked fine, because the second one (get_page_by_title) was returning another post (not page) link with similar (but not the same) slug. I don't know why this was happening.
- 1
- 2019-06-10
- Adriana Hernández
-
- 2011-02-28
이게 더 나을 것 같습니다 :
functionget_page_by_slug ($page_slug,$ output=OBJECT,$post_type='page') { 글로벌 $ wpdb; $page=$ wpdb- >get_var ($ wpdb- >prepare ( "$ wpdb에서 ID 선택->posts WHEREpost_name=% s ANDpost_type=% s",$page_slug,$post_type)); if ($page) returnget_page ($page,$ output); null을 반환합니다. }
'원본'패턴
get_page_by_title 워드 프레스 코드>
.(라인 3173)rgds
I think this could be better:
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", $page_slug, $post_type ) ); if ( $page ) return get_page($page, $output); return null; }
following the pattern of "original"
get_page_by_title
of wordpress. (line 3173)rgds
-
왜 더 좋을까요?설명 할 수 있습니까?Why would that be better? Can you explain?
- 11
- 2012-04-11
- julien_c
-
마지막 코멘트-저는 SQL에 조건이 하나 더 필요하다고 생각합니다 :`functionget_page_by_slug ($page_slug,$ output=OBJECT,$post_type='page') {global $ wpdb;$page=$ wpdb->get_var ($ wpdb->prepare ( "$ wpdb에서 ID 선택-> 게시물 WHEREpost_name=% s ANDpost_type=% s ANDpost_status='publish'",$page_slug,$post_type));if ($page) returnget_page ($page,$ output);null을 반환합니다.}`Last comment - I think that sql needs to have one more condition: `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; }`
-
왜?ID를 얻기 위해 완전한 게시물 객체를 생성하지는 않습니다.Why? It doesn't generate a complete post object just to get the ID.
- 0
- 2013-01-09
- s_ha_dum
-
@webcitron 나는 Wordpress의 원래 패턴을 따르기 때문에 '제목'으로 게시물을 얻고 '슬러그'로 변경한다고 생각합니다. ([링크] (http://core.trac.wordpress.org/browser/tags/3.1/wp-includes/post.php#L3173) 확인)@webcitron I think just because is following original pattern of Wordpress getting post by 'title', just changing for 'slug'. (check the [link](http://core.trac.wordpress.org/browser/tags/3.1/wp-includes/post.php#L3173))
- 0
- 2013-05-13
- Matheus Eduardo
-
이것은 좋은 대답입니다.이는 페이지를 마스킹하거나 잘못 필터링하는 악성 플러그인의 가능성을 우회합니다.post 테이블에서id를 반환하면 여기에서`\ WP_Post`의 인스턴스를 만들 수 있으며 다른 값을 확인하는 모든 워드 프레스 함수에서 직접 해결됩니다.`\ WP_Post`는 게시물에 대한 대부분의 관련 데이터를 직접 찾는 방법도 제공합니다.This is a good answer. This bypasses the possiblity of a rogue plugin masking your page or incorrectly filtering it. If you return the id from the post table, then you can create an instance of `\WP_Post` from it, and that resolves directly in all of the wordpress functions that check for other values. `\WP_Post` also provides methods directly to find most related data about the post.
- 0
- 2018-03-23
- mopsyd
-
- 2013-01-31
다음은 Tom McFarlin이 블로그 에 게시 한 방법입니다.
<사전> <코드> /** * 들어오는 슬러그를 기반으로 페이지의 영구 링크를 반환합니다. * * @param string $ slug 링크 할 페이지의 슬러그. * @return string 페이지의 영구 링크 * @ 1.0 이후 */ function wpse_4999_get_permalink_by_slug ($ slug,$post_type='') { //퍼머 링크 값 초기화 $permalink=null; //WP_Query에 대한 인수 빌드 $ args=array ( '이름'=> $ 슬러그, 'max_num_posts'=> 1 ); //선택적 인수가 설정된 경우 인수 배열에 추가합니다. if ( ''!=$post_type) { $ args=array_merge ($ args,array ( 'post_type'=> $post_type)); } //쿼리 실행 (및 재설정) $ query=새로운 WP_Query ($ args); if ($ query- > have_posts ()) { $ query- >the_post (); $permalink=get_permalink (get_the_ID ()); wp_reset_postdata (); } $permalink 반환; }맞춤 게시물 유형 및 기본 제공 게시물 유형 (예 :
post
및page
)에서 작동합니다.This is a method published by Tom McFarlin on his blog:
/** * Returns the permalink for a page based on the incoming slug. * * @param string $slug The slug of the page to which we're going to link. * @return string The permalink of the page * @since 1.0 */ function wpse_4999_get_permalink_by_slug( $slug, $post_type = '' ) { // Initialize the permalink value $permalink = null; // Build the arguments for WP_Query $args = array( 'name' => $slug, 'max_num_posts' => 1 ); // If the optional argument is set, add it to the arguments array if( '' != $post_type ) { $args = array_merge( $args, array( 'post_type' => $post_type ) ); } // Run the query (and reset it) $query = new WP_Query( $args ); if( $query->have_posts() ) { $query->the_post(); $permalink = get_permalink( get_the_ID() ); wp_reset_postdata(); } return $permalink; }
It works with custom post types and built-in post types (such as
post
andpage
). -
- 2017-09-01
계층 적 페이지가 그렇게 작동하지 않기 때문에 허용되는 답변이 잘못되었습니다.간단히 말해서,슬러그가 항상 페이지 또는 게시물의 경로는 아닙니다.예 :페이지에 자식 등이 있습니다. 경로는
parent-slug/child-slug
가되고get_page_by_path
는 이러한 방식으로child-slug
를 찾지 못합니다..적절한 해결책은 다음과 같습니다.function mycoolprefix_post_by_slug($the_slug, $post_type = "page"){ $args = array( 'name' => $the_slug, 'post_type' => $post_type, 'post_status' => 'publish', 'numberposts' => 1 ); $my_page = get_posts($args)[0]; return $my_page; } <a href="<?php echo mycoolprefix_post_by_slug('map'); ?>">Map</a>
the accepted answer is wrong because hierarchical pages don't work like that. Simply put, the slug is not always the path of the page or post. E.g. your page has a child etc. the path will be
parent-slug/child-slug
andget_page_by_path
will fail to findchild-slug
this way. The proper solution is this:function mycoolprefix_post_by_slug($the_slug, $post_type = "page"){ $args = array( 'name' => $the_slug, 'post_type' => $post_type, 'post_status' => 'publish', 'numberposts' => 1 ); $my_page = get_posts($args)[0]; return $my_page; } <a href="<?php echo mycoolprefix_post_by_slug('map'); ?>">Map</a>
-
- 2018-02-26
시도 :
<a href="<?php echo get_page_link( get_page_by_path( 'map' ) ); ?>">Map</a>
get_page_by_path( 'path' )
는post/page 객체를 받아들이고permalink를 반환하므로get_page_link()
에서 사용할 수있는 페이지/포스트 객체를 반환합니다.Try This:
<a href="<?php echo get_page_link( get_page_by_path( 'map' ) ); ?>">Map</a>
get_page_by_path( 'path' )
returns page/post object which can be then used byget_page_link()
as it accepts post/page object and returns permalink.-
답변을 ** [수정]하고 ** 설명을 추가하세요. ** 왜 ** 문제가 해결 될 수 있나요?Please **[edit] your answer**, and add an explanation: **why** could that solve the problem?
- 2
- 2018-02-26
- fuxia
-
- 2014-11-11
function theme_get_permalink_by_title( $title ) { // Initialize the permalink value $permalink = null; // Try to get the page by the incoming title $page = get_page_by_title( strtolower( $title ) ); // If the page exists, then let's get its permalink if( null != $page ) { $permalink = get_permalink( $page->ID ); } // end if return $permalink; } // end theme_get_permalink_by_title
이 기능을 사용하는 사람
if( null == theme_get_permalink_by_title( 'Register For This Site' ) ) { // The permalink doesn't exist, so handle this however you best see fit. } else { // The page exists, so do what you need to do. } // end if/else
function theme_get_permalink_by_title( $title ) { // Initialize the permalink value $permalink = null; // Try to get the page by the incoming title $page = get_page_by_title( strtolower( $title ) ); // If the page exists, then let's get its permalink if( null != $page ) { $permalink = get_permalink( $page->ID ); } // end if return $permalink; } // end theme_get_permalink_by_title
Use this function by
if( null == theme_get_permalink_by_title( 'Register For This Site' ) ) { // The permalink doesn't exist, so handle this however you best see fit. } else { // The page exists, so do what you need to do. } // end if/else
슬러그만으로 페이지의 영구 링크를 얻을 수 있습니까?
get_page_link()
를 사용하여 ID에서 페이지의 영구 링크를 가져올 수 있다는 것을 알고 있습니다.다음과 같이 페이지의 슬러그로 동일한 작업을 수행 할 수있는 방법이 있는지 궁금합니다.