Codex

Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!

ko:Linking Posts Pages and Categories

This article is marked as in need of editing. You can help Codex by editing it.

워드프레스에는 한 콘텐츠 페이지에서 다른 콘텐츠로 링크하는 2가지 방법이 있다. 하나는 고유 주소를 사용하고, 다른 하나는 고유 주소를 사용하지 않는다. 고유 주소를 사용하지 않는 방법은 사이트의 고유 주소 사용 여부와 관계 없이 작동한다.

고유 주소를 사용하지 않고 링크

고유 주소를 사용하지 않으면, 페이지, 글, 카테고리에는 어떤 방법으로 링크할 것인가?

글, 카테고리, 페이지 [[Administration_Panels|관리 화면]에 있는 ID 값(숫자)을 사용하면, 다음과 같은 링크를 만들 수 있다.

글에 링크하려면, 글 관리 화면에서 목표 글의 ID를 찾아, 이 링크의 '123' 대신 삽입한다:

<a href="index.php?p=123">Post Title</a>

카테고리

카테고리에 링크하려면, 카테고리 관리 화면에서 목표 카테고리의 ID를 찾아, 이 링크의 '7' 대신 삽입한다:

<a href="index.php?cat=7">Category Title</a>

페이지

페이지에 링크하려면, 페이지 관리 화면에서 목표 페이지의 ID를 찾아, 이 링크의 '42' 대신 삽입한다:

<a href="index.php?page_id=42">Page title</a>

날짜 기반 아카이브(Archives, 콘텐츠 저장소)

  • 연: <a href="index.php?m=2006">2006</a>
  • 월: <a href="index.php?m=200601">Jan 2006</a>
  • 일: <a href="index.php?m=20060101">Jan 1, 2006</a>

외부 사이트에서 링크

외부 사이트로부터 여러분의 사이트로의 링크를 제공하고 있다면, 정확한 위치를 가리키는 전체 URL을 지정해야 한다:

<a href="http://example.com/index.php?p=123">post title</a>

워드프레스를 wordpress와 같은 하위 폴더에 설치하였다면, 링크 URL에 이 폴더를 추가해야 한다:

<a href="http://example.com/wordpress/index.php?p=123">post title</a>

고유 주소를 사용하여 링크

고유 주소를 사용하고 있다면, 앞서 말한 고유 주소를 사용하지 않는 링크를 모두 사용할 수 있다. 이것은 고유 주소 활성화 여부에 따라 사용할 수 있다. 고유 주소를 활성화하면, 아리송한 숫자가 아닌 좀 더 독자 친화적인 링크를 제공하기 위한 추가 옵션이 있다.

고유 주소 구성 방법에 따라 URL이 복잡하게 된다. 고유 주소를 구성([[Administration_Panels#Permalinks|설정 > 고유 주소] 관리화면l에서 설정)할 때 많은 구조 태그(Structure Tags)가 포함된다. 그러면 URL은 구성하기 더 어려울 것이다.

글에 대해, 해당 글의 URL을 구성하기 위해, 고유 주소 구조에 있는 구조 태그(Structure Tag)를 글에 적절한 데이터로 대체한다. 예를 들어, 고유 주소 구조가 아래와 같다면:

/index.php/archives/%year%/%monthnum%/%day%/%postname%/

적절한 값으로 구조 태그를 대체하면, 아래와 같은 URL이 생성된다:

<a href="/index.php/archives/2005/04/22/my-sample-post/">My Sample Post</a>

글에 대한 정확한 URL을 얻기 위해, 워드프레스 블로그 안에서 해당 글을 검색해서, 워드프레스가 생성하는 블로그 링크 중 하나를 선택하여 해당 URL을 복사하는 것이 더 쉬울 수도 있다.

개별 글에 URL을 구성하는 더 자세한 방법은 Using Permalinks 참조.

카테고리

고유 주소를 사용하여 카테고리로의 링크를 만들기 위해, 설정 > 고유 주소 관리 화면 에서 카테고리 기본 값(Category Base value)을 찾아, 끝에 카테고리 이름을 첨부한다.

예를 들어, 카테고리 기본 갑이 "/index.php/categories"일 때 "testing" 카테고리로 링크하기 위해, 다음과 같은 링크를 사용한다:

<a href="/index.php/categories/testing/">category link</a>

URL에 직접 (위에서 같이) 하위 카테고리를 사용하거나, 또는 아래와 같이 해당 카테고리 앞에 모든 부모 카테고리를 지정하여 하위 카테고리로의 링크를 지정할 수 있다:

<a href="/index.php/categories/parent_category/sub_category/">subcategory link</a>

페이지

페이지는 카테고리와 같이 계층 구조를 가지며, 부모를 가질 수 있다. 한 페이지가 계층 구조의 루트에 위치한다면, 고유 주소 구조의 정적인 부분 뒤에 그 페이지의 "페이지 슬러그(page slug)" 만을 지정할 수 있다:

<a href="/index.php/a-test-page">a test page</a>

다시 한번, 정확한 URL인지 확인하는 최선의 방법은, 블로그에서 대상 페이지로 이동해서, 그 페이지의 URL이 링크로 사용하고자 하는 URL인지 비교해보는 것이다.

날짜 기준 아카이브(Archives, 글 저장소)

  • Year: <a href="/index.php/archives/2006">2006</a>
  • Month: <a href="/index.php/archives/2006/01/">Jan 2006</a>
  • Day: <a href="/index.php/archives/2006/01/01/">Jan 1, 2006</a>

외부 사이트에서 링크

고유주소 구조는 슬래시로 시작해야 한다. 고유주소가 사이트 URL의 루트에 고정되는(anchoredPermalink) 것을 의미한다. 그 프로토콜과 서버 이름을 슬래시로 시작하는 모든 링크에 접두어로 첨부해서(prepend) 전체 URL을 성공적으로 구성해야 한다.

예를 들어, 이 카테고리 링크는:

<a href="/index.php/categories/parent_category/sub_category/">subcategory link</a>

전체 URL을 사용하여 이 카테고리 링크가 된다:

<a href="http://example.com/index.php/categories/parent_category/sub_category/">subcategory link</a>

링크와 템플릿 태그를 결합

헤더, 푸터, 사이드바에 있는 링크가 여러 유형의 링크 조합이 되도록 사용자 정의 할 수 있다. 이 예제는, 메인 인덱스 페이지(main index page), 한 개의 글(a post)인 정적인 페이지(a static page) 2개의 카테고리로의 링크가 특징이고, 페이지 템플릿 태그를 사용한다.

자세히 살펴보면, wp_list_pages() 템플릿 태그는 자신의 목록 항목(LI)을 만들기 때문에, LI 태그로 둘러쌀 필요가 없다. 이 템플릿 태그는 부모 페이지만의 목록을 만들도록 설정되어 있다. 하위 페이지 또는 "자식" 페이지에 대해서는 목록을 만들지 않는다.

<ul id="linklist">
 <li>
  <?php _e('Check It Out'); ?>
  <ul id="pageslist">
   <li>
    <a title="Home Page" href="index.php">Home</a>
   </li>
   <li>
    <a title="Blog" href="index.php?cat=7">Blog</a>
   </li>
   <li>
    <a title="Life Story" href="index.php?p=12">My Life Story</a>
   </li>
   <?php wp_list_pages('exclude=4&depth=1&sort_column=menu_order&title_li='); ?>
   <li>
    <a title="Links and Resources" href="index.php?cat=33">Links</a>
   </li>
   <li>
    <a title="Site Map" href="sitemap.php">Site Map</a>
   </li>
  </ul>
 </li>
</ul>

이렇게 사용자 정의된 목록을 사용하면, 각각의 링크의 외모를 변경하기 위해 CSS를 추가할 수 있다, 또는 전체 섹션을 스타일링할 수도 있다. 여러분이 선택할 일이다.

절대 링크와 상대 링크

절대 링크는 링크의 대상을 찾기 위해 절대 경로를 정의한다.
상대 링크는 현재 문서의 상대 경로로 다른 문서의 위치를 정의한다.

절대 링크의 예

http://example.com/wordpress/index.php와 같은 형식의 전체 URL이 절대 링크이다

절대 경로는 자신의 서버를 가리킬 수도 있다. 자신의 서버를 가리킬 때, http://domain.com 접두어를 안전하게 생략할 수 있고, 전체 경로로 대상에 링크된다:

/wordpress/index.php

앞의 슬래시는 "이 도메인의 최상위에 디렉터리 wordpress가 있고, 이 디렉터리 안에 index.php 파일이 있다"는 의미이다.

아래에 있는 문서는

http://example.com/wordpress/index.php

아래와 같은 링크를 포함하고 있다

/wordpress/index.php

위에 있는 링크를 클릭하면, 독자는 아래 주소로 이동된다.

http://example.com/wordpress/index.php

상대 링크의 예

상대 링크는 슬래시로 시작하지 않는다:

wordpress/index.php

슬래시가 없다는 것은 "현재 디렉터리 안에 wordpress라는 하위 디렉터리가 있고, 이 디렉터리 안에 index.php라는 파일이 있다"는 의미이다.

아래에 있는 문서는

http://example.com/wordpress/index.php

아래와 같은 링크를 포함하고 있다.

wordpress/index.php

위에 있는 링크를 클릭하면, 독자는 아래 주소로 이동된다.

http://example.com/wordpress/wordpress/index.php

블로그에서 다음 문서를 편집하고 있을 경우를 생각해보자:

http://example.org/blog/2009/01/04/nurds-on-the-loose

From it we can make links

  1. <a href="../01/happy-new-year">New Years Announcement</a>
  2. <a href="../../01/01/happy-new-year">New Years Announcement</a>
  3. <a href="../../../2009/01/01/happy-new-year">New Year's Announcement</a>
  4. <a href="../../../2008/12/25/merry-christmas">Christmas Announcement</a>

1, 2, 3은 모두 유효하여, 같은 링크로 이동할 수 있다. 그러나 4는 경로가 잘못되었다, 이전 년도로 이동하는 모든 경로를 "거슬러 올라가야(climb)"만 하기 때문이다.

링크들은 모두 상대적이다. 그리고 필요한 것보다 더 많은 정보로 고정할 필요가 없다. 이렇게 하면 향후 블로그를 이전할 때, 이동하기 쉽게 된다. (향후 관리 화면에서 다른 고유 주소를 선택할 때 어떤 일이 일어날지 모른다...)

그러나, 위의 사례는 항상 개별 글을 보고 있는 경우를 가정하고 있다. 사실 한 아카이브(archive)에서 동일한 글을 보고 있다면, 현재 위치하고 있는 곳에 대한 가정은 잘못된 것이다! 잘 작동하는 상대 링크는 어떤 지를 알아봐야 한다. 이것은 치명적인 결함이 있어, 선택할 수 없다!

절대·상대 링크에 대한 더 상세한 정보는 WebReference Tutorial on Absolute and Relative Links를 참조한다.

템플릿의 동적 링크

고유 주소 사용 여부와 관계 없이, 템플릿에서 <a href="<?php echo get_permalink(ID); ?>">This is a link</a>를 사용하여 글의 ID 번호를 참조함으로써 페이지 또는 글을 링크할 수 있다 (관리자 인터페이스의 여러 페이지에서 볼 수 있다). (Template_Tags/get_permalink에서 같은 내용을 참조할 수 있다)

ID는 항상 같으므로, 나중에 링크를 깨지 않고 페이지 슬러그(slug)를 변경할 수 있기 때문에, 이 방법은 페이지 메뉴를 생성하는 편리한 방법이다. 그러나, 이 방법으로 데이터베이스 쿼리가 증가할 수 있다.

동적인 페이지 메뉴는 매개 변수의 자식(child_)인 Template_Tags/wp_list_pages 또는 가능한 플러그인를 사용하여 생성될 수도 있다.

RSS

모든 RSS 적용 환경에서 정규화 링크(http:...)만으로 작동이 보장된다.