webentwicklung-frage-antwort-db.com.de

Wordpress Holen Sie sich die Seiten-ID außerhalb der Schleife

Ich möchte die Seiten-ID erhalten, bevor ich die Schleife in Wordpress starte. ich benutze

$page = get_query_var('page_id');

Anscheinend gibt es nichts zurück.

Ich möchte nur eine Seite auf ihre ID überprüfen und dem darauf basierenden <body>-Tag eine Klasse hinzufügen.

Wenn Sie hübsche Permalinks verwenden, funktioniert get_query_var('page_id') nicht.

Rufen Sie stattdessen die abgefragte Objekt-ID ab vom globalen $wp_query:

// Since 3.1 - recommended!
$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();
149
TheDeadMedic

Sie können auch eine generische Funktion erstellen, um die ID des Beitrags abzurufen, unabhängig davon, ob sie sich außerhalb oder innerhalb der Schleife befindet (behandelt beide Fälle):

<?php

/**
 * @uses WP_Query
 * @uses get_queried_object()
 * @see get_the_ID()
 * @return int
 */
function get_the_post_id() {
  if (in_the_loop()) {
       $post_id = get_the_ID();
  } else {
       global $wp_query;
       $post_id = $wp_query->get_queried_object_id();
         }
  return $post_id;
} ?>

Und mach einfach:

$page_id = get_the_post_id();
8
Nadeem Khan

Verwenden Sie stattdessen diesen globalen $ post:

global $post;
echo $post->ID;
6
ryscript

Wenn Sie dieses Thema aufgrund der Postseite (alternative Indexseite bei Verwendung der statischen Startseite) durchsucht haben, lautet die richtige Antwort:

if (get_option('show_on_front') == 'page') {
    $page_id = get_option('page_for_posts');
    echo get_the_title($page_id);
}

(entnommen aus Forrst | Echo WordPress "Posts Page" - Titel - Ein Code von tammyhart )

4
banesto

Ich habe es folgendermaßen gemacht und es hat perfekt für mich funktioniert.

Deklariert zuerst eine globale Variable in der header.php und weist ihr die ID des Posts oder der Seite zu, bevor sie sich ändert, da die LOOP ihr die ID des zuletzt angezeigten Eintrags zuweist:

$GLOBALS['pageid] = $wp_query->get_queried_object_id();

Und zur Verwendung überall in der Vorlage, zum Beispiel in der footer.php:

echo $GLOBALS['pageid];

0
Edd

Wenn Sie sich auf einer Seite befinden und dies nicht funktioniert:

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

sie können versuchen, den Permalink manuell mit PHP zu erstellen, um die Post-ID nachzuschlagen:

// get or make permalink
$url = !empty(get_the_permalink()) ? get_the_permalink() : (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_Host]$_SERVER[REQUEST_URI]";
$permalink = strtok($url, '?');

// get post_id using url/permalink
$post_id = url_to_postid($url);

// want the post or postmeta? use get_post() or get_post_meta()
$post = get_post($post_id);
$postmeta = get_post_meta($post_id);

Es fängt möglicherweise nicht jeden möglichen Permalink ein (insbesondere, da ich die Abfragezeichenfolge abstreife), aber Sie können ihn an Ihren Anwendungsfall anpassen.

0
Jarrett Barnett

Verwenden Sie unten zwei Codezeilen, um die aktuelle Seiten- oder Beitrags-ID zu erhalten 

global $post;
echo $post->ID;
0
Braj Kishor Sah

Sie können is_page($page_id) außerhalb der Schleife zur Überprüfung verwenden.

0
nikc.org

Diese Funktion liefert eine ID von einer aktuellen Seite.

get_the_ID();
0
jruzafa