Tôi sẽ không cố gắng bản địa hóa sên của bạn. Thay vào đó, tại sao không cung cấp cho người dùng của bạn tùy chọn để thay đổi chúng bằng cách thêm một trường khác vào trang cài đặt permalink?
Móc vào load-options-permalink.php
và thiết lập một số thứ để bắt $_POST
dữ liệu để lưu sên của bạn. Đồng thời thêm trường cài đặt vào trang.
<?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' );
}
Sau đó, chức năng gọi lại cho trường cài đặt:
<?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" />';
}
Sau đó, khi bạn đăng ký loại bài đăng của bạn, lấy sên với get_option
. Nếu nó không ở đó, sử dụng mặc định của bạn.
<?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 );
}
Đây là phần trường cài đặt dưới dạng plugin https://gist.github.com/1275867
EDIT: Một lựa chọn khác
Bạn cũng có thể thay đổi sên dựa trên những gì được xác định trong WPLANG
hằng số.
Chỉ cần viết một chức năng nhanh chóng chứa dữ liệu ...
<?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];
}
Sau đó lấy sên nơi bạn đăng ký loại bài tùy chỉnh của bạn.
<?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 );
}
Tùy chọn tốt nhất, IMO, sẽ là cung cấp cho người dùng một tùy chọn và cung cấp các giá trị mặc định vững chắc:
<?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
với một sên được đặt thànhprensa
. Sử dụng WPML , sên trang được dịchpress
là không thểprensa
lặp lại: / en / nhấn / không hiển thị bất cứ điều gì (lưu ý rằng bây giờ nhấp vào liên kết ES sẽ không đưa bạn trở lại / prensa /). NHƯNG, nếu bạn truy cập / en / prensa / nó hoạt động ...