web-dev-qa-db-fra.com

Comment obtenir post slug de post dans WordPress?

Je veux obtenir "abc_15_11_02_3" de http://example.com/nom_projet/abc_15_11_02_3/ . Comment puis-je faire ceci?

38
user1990

Vous pouvez l'obtenir en utilisant les méthodes suivantes:

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

Ou vous pouvez utiliser ce code simple:

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

Si vous voulez avoir le slug du message de la boucle alors utilisez:

global $post;
echo $post->post_name;

Si vous voulez obtenir un message du message en dehors de la boucle, utilisez:

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

Vous pouvez faire cela à bien des égards:

1- Vous pouvez utiliser Wordpress variable globale $post:

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

2- Ou vous pouvez utiliser:

$slug = get_post_field( 'post_name', get_post() );

3- Ou obtenez l'URL complète puis utilisez la fonction 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 );

J'espère que les méthodes ci-dessus vous aideront.

14
Yatin Khullar

Wordpress: Obtenez un slug de publication/page

<?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
theRana

Vous pouvez le récupérer à partir de l'objet post comme suit:

global $post;
$post->post_name;
2
Igor Yavych

utiliser la variable globale $ post

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

Je suis tombé sur cette méthode et je l’utilise pour faire des identifiants div le nom du slug à l’intérieur de la boucle:

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

Voici la version la plus avancée et mise à jour qui couvre de nombreux cas:

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;

Ce sont des collections des meilleures réponses et peu de mes mises à jour.