如何从WordPress的帖子中获取post slug?

时间:2015-11-21 10:30:20

标签: wordpress

我想从http://example.com/project_name/abc_15_11_02_3/获得“abc_15_11_02_3”。我怎么能这样做?

10 个答案:

答案 0 :(得分:49)

您可以使用以下方法获得该信息:

<?php $post_slug = get_post_field( 'post_name', get_post() ); ?>

或者你可以使用这个简单的代码:

<?php
    global $post;
    $post_slug = $post->post_name;
?>

答案 1 :(得分:20)

如果您想从帖子获取帖子,请使用:

global $post;
echo $post->post_name;

如果您希望获得帖子在圈外的帖子,请使用:

$post_id = 45; //specify post id here
$post = get_post($post_id); 
$slug = $post->post_name;

答案 2 :(得分:13)

您可以通过多种方式执行此操作:

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 );

我希望以上方法能为您提供帮助。

答案 3 :(得分:5)

Wordpress:获取帖子/页面slug

<?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(); } ?>

答案 4 :(得分:2)

您可以从post对象中检索它,如下所示:

global $post;
$post->post_name;

答案 5 :(得分:2)

根据WP Codex进行此操作的最佳选择如下。

使用全局变量$ post:

<?php 
    global $post;
    $post_slug = $post->post_name;
?>

答案 6 :(得分:1)

使用全局变量$ post

<?php 
    global $post;
    $post_slug=$post->post_name;
?>

答案 7 :(得分:1)

这个简单的代码对我有用:

$postId = get_the_ID();
$slug = basename(get_permalink($postId));
echo $slug;

答案 8 :(得分:0)

这是最先进的更新版本,涵盖了许多情况:

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 :(得分:0)

我遇到了这种方法,并使用它来使div ID成为循环内的子弹名称:

<?php $slug = basename( get_permalink() ); echo $slug;?>