web-dev-qa-db-fra.com

récupère l'identifiant de la page actuelle dans la page du plugin wordpress

Je dois obtenir le page id actuel dans la page du plugin WordPress en dehors de la boucle. Et le code que j'ai écrit pour obtenir le page id actuel se trouve dans ma page de plugin. J'ai essayé beaucoup de codes, mais ça ne marche pas 

$page_object = get_queried_object();
$page_id     = get_queried_object_id();


 // "Dirty" pre 3.1
 global $wp_query;

$page_object = $wp_query->get_queried_object();
$page_id     = $wp_query->get_queried_object_id();

Mais ça ne marche pas pour moi. 

  global $post;
  echo "pageid: ".$post->ID;

Cela ne fonctionne pas non plus.

Quand j'essaye

     global $wp_query;
     $post_obj = $wp_query->get_queried_object();
     $Page_ID = $post_obj->ID;
     echo $Page_ID;

Puis un message d'erreur apparaît 

Erreur fatale: appel de la fonction membre get_queried_object () sur un non-objet dans H:\xampp\htdocs\wordpress\wp-content\plugins\wpk\wpk.php à la ligne 876

Quand j'imprime:

global $wp_query;
print_r($wp_query);

alors le résultat est:

WP_Query Object
(
    [query] => 
    [query_vars] => Array
        (
        )

    [tax_query] => 
    [meta_query] => 
    [date_query] => 
    [queried_object] => 
    [queried_object_id] => 
    [request] => 
    [posts] => 
    [post_count] => 0
    [current_post] => -1
    [in_the_loop] => 
    [post] => 
    [comments] => 
    [comment_count] => 0
    [current_comment] => -1
    [comment] => 
    [found_posts] => 0
    [max_num_pages] => 0
    [max_num_comment_pages] => 0
    [is_single] => 
    [is_preview] => 
    [is_page] => 
    [is_archive] => 
    [is_date] => 
    [is_year] => 
    [is_month] => 
    [is_day] => 
    [is_time] => 
    [is_author] => 
    [is_category] => 
    [is_tag] => 
    [is_tax] => 
    [is_search] => 
    [is_feed] => 
    [is_comment_feed] => 
    [is_trackback] => 
    [is_home] => 
    [is_404] => 
    [is_comments_popup] => 
    [is_paged] => 
    [is_admin] => 
    [is_attachment] => 
    [is_singular] => 
    [is_robots] => 
    [is_posts_page] => 
    [is_post_type_archive] => 
    [query_vars_hash] => 
    [query_vars_changed] => 1
    [thumbnails_cached] => 
    [stopwords:WP_Query:private] => 
)

Je ne sais pas comment résoudre ceci, comment obtenir le page id actuel. Si vous savez comment résoudre ce problème, alors j'ai besoin de votre soutien. Merci d'avance.

22
user3400696

get_the_ID(); or $post->ID; renvoie la page actuelle ou l'identifiant de publication dans Wordpress.

Mais vous devez vous assurer que votre message est enregistré dans wordpress post table. Sinon, vous ne pouvez pas obtenir l'identifiant, simplement à cause de cela pas une entrée dans la base de données wordpress.

Si c'est une page statique et que ce n'est pas une entrée dans wordpress post, get_the_ID() n'a rien renvoyé.

Par exemple: get_the_ID () n'a pas fonctionné dans les pages post-archive, les pages d'administration dans le backend wordpress, etc.

So comme par cette question vous essayez d'obtenir l'id de la page qui est une page de paramétrage de plug-in backend ou une page d'archive. 

METTRE À JOUR

Méthode pour obtenir l'identifiant du message courant dans wordpress

(1) global $post; $post->ID();

(2) global $wp_query; $post_id = $wp_query->get_queried_object_id();

(3) global $wp_query; $post_id = $wp_query->post->ID;

(4) get_the_ID();

[Il est recommandé que cette balise soit dans la boucle. ] 

regarde ça 

      function get_the_ID() {
               $post = get_post();
               return ! empty( $post ) ? $post->ID : false;
                }

ie get_the_ID () retourne l'id de $ post en cours.

(5) get_query_var('page_id')

[ça ne marchera pas si nous utilisons assez permalink]
https://codex.wordpress.org/Function_Reference/get_query_var

35
Sagin

Vous pouvez obtenir ID du message dans la page actuelle en dehors de la boucle en utilisant la technique ci-dessous:

global $wp_query;
$post_id = $wp_query->post->ID;

$post = get_post( $post_id );
$slug = $post->post_name;
13
Rajalakshmi

essayez d'utiliser le code ci-dessous pour obtenir l'identifiant de la page

get_the_ID();
4
Ram Sharma

La réponse choisie fonctionne uniquement si vous la mettez dans la boucle Wordpress . Dehors, il deviendra inutile.

Cela fonctionne partout:

global $wp_query;
$postID = $wp_query->post->ID;
1
Dreszczyk

Je suppose que c'est la bonne solution:

$id = get_queried_object_id();

ce qui équivaut à:

function get_queried_object_id() {
    global $wp_query;
    return $wp_query->get_queried_object_id();
}
1
D.A.H

Vous obtenez tous les paramètres et les variables dans la fonction get_defined_vars():

var_dump(get_defined_vars());

Dans votre cas, vous devez avoir '_GET' et à l'intérieur 'post' ... Le code devrait ressembler à ceci:

$tmp = get_defined_vars();
var_dump($tmp['_GET']['post']);
0
raBne