답변:
안녕 @Silent :
WordPress 3.1에는 원하는 것을 정확하게 수행하는 함수가 있으며 이름이 지정됩니다 get_post_type_archive_link()
. 다음은 호출하는 방법입니다 (라는 이름의 맞춤 게시물 유형을 가정 'product'
).
<a href="<?php echo get_post_type_archive_link('product'); ?>">Products</a>
아래는 WordPress에 실제로이 사용 사례에 대한 기능이 내장되어 있음을 발견하기 전의 이전 답변입니다.
WordPress 3.1의 핵심 소스 코드에서 무언가를 간과하지 않는 한 다음과 같이 get_archive_link()
호출 할 수 있는 함수를 찾고 있다고 생각합니다 (이름이 커스텀 게시물 유형이라고 가정 'product'
).
<a href="<?php echo get_archive_link('product'); ?>">Products</a>
다음은 테마 function.php
파일 또는 .php
작성중인 플러그인 파일에 넣을 수있는 소스 코드입니다 .
if (!function_exists('get_archive_link')) {
function get_archive_link( $post_type ) {
global $wp_post_types;
$archive_link = false;
if (isset($wp_post_types[$post_type])) {
$wp_post_type = $wp_post_types[$post_type];
if ($wp_post_type->publicly_queryable)
if ($wp_post_type->has_archive && $wp_post_type->has_archive!==true)
$slug = $wp_post_type->has_archive;
else if (isset($wp_post_type->rewrite['slug']))
$slug = $wp_post_type->rewrite['slug'];
else
$slug = $post_type;
$archive_link = get_option( 'siteurl' ) . "/{$slug}/";
}
return apply_filters( 'archive_link', $archive_link, $post_type );
}
}
나는 주말 에이 정확한 논리를 실제로 연구하고 있었지만, 비록 특정 사이트에서 작동 할지라도 WordPress가 볼 수있는 모든 사용 사례에서 논리 순서가 일반적으로 정확하다는 것은 100 % 확실하지는 않습니다.
이것은 오늘 저녁에 나중에 할 것이라고 생각하는 trac 을 통해 WordPress에 추가되도록 제안하는 것도 좋습니다 .
게시물 유형을 등록 할 때 "has_archive"매개 변수를 사용하여 문자열을 슬러그로 전달할 수 있으며 다시 쓰기를 true 또는 배열로 설정하지만 false가 아닌 CPT 아카이브 URL은 http://www.YOURDOMAIN.com 이어야합니다 . 예를 들어 / has_archive_slug
예를 들어 register_post_type에 설정 한 경우 :
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => 'product',
'capability_type' => 'post',
'has_archive' => 'products',
'hierarchical' => false,
'menu_position' => null,
'supports' => array('title','editor','author','thumbnail','excerpt','comments')
);
register_post_type('product',$args);
단일 URL은 http://www.YOURDOMAIN.com/product/postName 이고 보관 URL은 http://www.YOURDOMAIN.com/products/입니다.
has_archive
부울 이라고 생각 했지만 지금은 문자열을 줄 수 있다는 것을 알고 있으므로 내 단수 사용자 정의 게시물 유형 recipe
에는 복수 슬러그가있을 수 있습니다./recipes/
'rewrite'
에는 부울 값이나 배열 값만 허용합니다. 오히려보다 'rewrite' => 'product',
당신이 나열했습니다, 대신해야한다 'rewrite' => array( 'slug' => 'product' ),
.
yoursite.com/type-slug
명시 적으로 다른 것으로 설정하지 않는 한입니다.yoursite.com/some-other-url
..