Я хочу получить "abc_15_11_02_3" с http://example.com/project_name/abc_15_11_02_3/. Как я могу это сделать?
Как получить пост-слаг из поста в WordPress?
Ответ 1
Вы можете получить это, используя следующие методы:
<?php $post_slug = get_post_field( 'post_name', get_post() ); ?>
Или вы можете использовать этот простой код:
<?php
global $post;
$post_slug = $post->post_name;
?>
Ответ 2
Если вы хотите получить пулю сообщения из цикла, используйте:
global $post;
echo $post->post_name;
Если вы хотите получить сообщение об ошибке за пределами цикла, используйте:
$post_id = 45; //specify post id here
$post = get_post($post_id);
$slug = $post->post_name;
Ответ 3
Вы можете это сделать во многих отношениях:
1- Вы можете использовать глобальную переменную Wordpress $post
:
<?php
global $post;
$post_slug=$post->post_name;
?>
2- Или вы можете использовать:
$slug = get_post_field( 'post_name', get_post() );
3- Или получить полный url, а затем использовать функцию PHP parse_url
:
$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$url_path = parse_url( $url, PHP_URL_PATH );
$slug = pathinfo( $url_path, PATHINFO_BASENAME );
Надеюсь, что выше методы помогут вам.
Ответ 4
Wordpress: получить сообщение/страницу
<?php
// Custom function to return the post slug
function the_slug($echo=true){
$slug = basename(get_permalink());
do_action('before_slug', $slug);
$slug = apply_filters('slug_filter', $slug);
if( $echo ) echo $slug;
do_action('after_slug', $slug);
return $slug;
}
?>
<?php if (function_exists('the_slug')) { the_slug(); } ?>
Ответ 5
Вы можете получить его из объекта post следующим образом:
global $post;
$post->post_name;
Ответ 6
использовать глобальную переменную $ post
<?php
global $post;
$post_slug=$post->post_name;
?>
Ответ 7
Лучший вариант сделать это в соответствии с WP Codex:
Используйте глобальную переменную $ post:
<?php
global $post;
$post_slug = $post->post_name;
?>
Ответ 8
Вот наиболее продвинутая и обновленная версия, охватывающая многие случаи:
if(!function_exists('the_slug')):
function the_slug($post_id=false, $echo=true) {
global $product, $page;
if(is_numeric($post_id) && $post_id == intval($post_id)) {} else {
if(!is_object($post_id)){}else if(property_exists($post_id, 'ID')){
$post_id = $post_id->ID;
}
if(empty($post_id) && property_exists($product, 'ID')) $post_id = $product->ID;
if(empty($post_id)) $post_id = get_the_ID();
if(empty($post_id) && property_exists($page, 'ID')) $post_id = $page->ID;
}
if(!empty($post_id))
$slug = basename(get_permalink($post_id));
else
$slug = basename(get_permalink());
do_action('before_slug', $slug);
$slug = apply_filters('slug_filter', $slug);
if( $echo ) echo $slug;
do_action('after_slug', $slug);
return $slug;
}
endif;
Это сборники из лучших ответов и несколько моих обновлений.
Ответ 9
Я наткнулся на этот метод, и я использую его, чтобы сделать идентификаторы div именем слага в цикле:
<?php $slug = basename( get_permalink() ); echo $slug;?>
Ответ 10
этот простой код работал для меня:
$postId = get_the_ID();
$slug = basename(get_permalink($postId));
echo $slug;