나는 당신의 슬러그를 현지화하려고하지 않을 것입니다. 대신 사용자에게 퍼머 링크 설정 페이지에 다른 필드를 추가하여 사용자를 변경할 수있는 옵션을 제공하십시오.
슬러그를 저장하기 load-options-permalink.php
위해 $_POST
데이터를 잡을 몇 가지를 연결 하고 설정 하십시오. 또한 페이지에 설정 필드를 추가하십시오.
<?php
add_action( 'load-options-permalink.php', 'wpse30021_load_permalinks' );
function wpse30021_load_permalinks()
{
if( isset( $_POST['wpse30021_cpt_base'] ) )
{
update_option( 'wpse30021_cpt_base', sanitize_title_with_dashes( $_POST['wpse30021_cpt_base'] ) );
}
// Add a settings field to the permalink page
add_settings_field( 'wpse30021_cpt_base', __( 'CPT Base' ), 'wpse30021_field_callback', 'permalink', 'optional' );
}
그런 다음 설정 필드의 콜백 기능 :
<?php
function wpse30021_field_callback()
{
$value = get_option( 'wpse30021_cpt_base' );
echo '<input type="text" value="' . esc_attr( $value ) . '" name="wpse30021_cpt_base" id="wpse30021_cpt_base" class="regular-text" />';
}
그런 다음 게시물 유형을 등록 할 때으로 슬러그를 잡습니다 get_option
. 없는 경우 기본값을 사용하십시오.
<?php
add_action( 'init', 'wpse30021_register_post_type' );
function wpse30021_register_post_type()
{
$slug = get_option( 'wpse30021_cpt_base' );
if( ! $slug ) $slug = 'your-default-slug';
// register your post type, reference $slug for the rewrite
$args['rewrite'] = array( 'slug' => $slug );
// Obviously you probably need more $args than one....
register_post_type( 'wpse30021_pt', $args );
}
플러그인으로 설정 필드 부분은 https://gist.github.com/1275867입니다.
편집 : 다른 옵션
WPLANG
상수에 정의 된 내용에 따라 슬러그를 변경할 수도 있습니다 .
데이터를 보유한 빠른 기능을 작성하십시오 ...
<?php
function wpse30021_get_slug()
{
// return a default slug
if( ! defined( 'WPLANG' ) || ! WPLANG || 'en_US' == WPLANG ) return 'press';
// array of slug data
$slugs = array(
'fr_FR' => 'presse',
'es_ES' => 'prensa'
// etc.
);
return $slugs[WPLANG];
}
그런 다음 사용자 정의 게시물 유형을 등록하는 슬러그를 가져옵니다.
<?php
add_action( 'init', 'wpse30021_register_post_type' );
function wpse30021_register_post_type()
{
$slug = wpse30021_get_slug();
// register your post type, reference $slug for the rewrite
$args['rewrite'] = array( 'slug' => $slug );
// Obviously you probably need more $args than one....
register_post_type( 'wpse30021_pt', $args );
}
가장 좋은 옵션 인 IMO는 사용자에게 옵션을 제공하고 확실한 기본값을 제공하는 것입니다.
<?php
add_action( 'init', 'wpse30021_register_post_type' );
function wpse30021_register_post_type()
{
$slug = get_option( 'wpse30021_cpt_base' );
// They didn't set up an option, get the default
if( ! $slug ) $slug = wpse30021_get_slug();
// register your post type, reference $slug for the rewrite
$args['rewrite'] = array( 'slug' => $slug );
// Obviously you probably need more $args than one....
register_post_type( 'wpse30021_pt', $args );
}
prensa
가prensa
있습니다. WPML을 사용 하면 번역 된 페이지 슬러그가 다시 표시press
될 수 없으므로 / en / press / 가 표시되지 않습니다 (이제 ES 링크를 클릭해도 / prensa /로 돌아 가지 않습니다). 그러나 / en / prensa / 를 방문하면 작동합니다 ...prensa