php - obtener - Wordpress Obtenga la ID de página fuera del ciclo
wordpress get first tag (11)
Quiero obtener la identificación de la página antes de comenzar el ciclo en Wordpress. estoy usando
$page = get_query_var(''page_id'');
Aparentemente, no devuelve nada.
Solo quiero verificar una página para su ID y agregar una clase a la etiqueta <body>
basada en ella.
Esta función obtiene id de una página actual.
get_the_ID();
Este es el código correcto.
echo $post->ID;
Lo hice de la siguiente manera y me funcionó a la perfección.
Primero declaró una variable global en el header.php, asignando el ID de la publicación o página antes de que cambie, ya que el LOOP le asigna el ID de la última entrada que se muestra:
$GLOBALS[''pageid] = $wp_query->get_queried_object_id();
Y para usar en cualquier lugar de la plantilla, ejemplo en footer.php:
echo $GLOBALS[''pageid];
Puede usar is_page($page_id)
fuera del ciclo para verificar.
Si de alguna manera buscó este tema debido a la página de la publicación (página de índice alternativa cuando usa la página frontal estática), entonces la respuesta correcta es esta:
if (get_option(''show_on_front'') == ''page'') {
$page_id = get_option(''page_for_posts'');
echo get_the_title($page_id);
}
(tomado del título de Forrst | Echo WordPress "Posts Page" - Algunos códigos de tammyhart )
Si está utilizando get_query_var(''page_id'')
permanentes bastante bonitos, get_query_var(''page_id'')
no funcionará.
En su lugar, obtenga la ID del objeto consultado desde : $wp_query
global
// 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();
Si estás en una página y esto no funciona:
$page_object = get_queried_object();
$page_id = get_queried_object_id();
puedes intentar construir el enlace permanente manualmente con PHP para que puedas buscar la ID de la publicación:
// 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 posible que no capte todos los enlaces permanentes posibles (especialmente porque estoy eliminando la cadena de consulta), pero puede modificarlo para adaptarlo a su caso de uso.
Si estás fuera del Loop de WordPress no puedes usar ninguno de los métodos de wordpress, entonces debes usar php puro.
Puedes usar este código Y seguro que te ayudará :)
$page_id = @$_GET[''page_id''];
if (!is_numeric($page_id)) {
// Then the uri must be in friendly format aka /my_domain/category/onepage/
// Try this
//$path = ''/www/public_html/index.php/'';
///$path = ''/my_domain/category/onepage/'';
$path = $_SERVER[''REQUEST_URI''];
// Clean the uri
//$path = str_replace(''/'', '''', $page);
$path = str_replace(''.php'', '''', $path);
//$path = str_replace(''?s='', '''', $path);
$path = $path ? $path : ''default'';
$path_len = strlen($path);
$last_char = substr($path, $path_len -1);
//echo $last_char;
$has_slash = strpos($last_char, "/");
//echo $has_slash;
if ($has_slash === 0) :
$path = substr($path, 0, $path_len -1);
elseif ($has_slash === null) :
$path = substr($path, 0, $path_len);
endif;
//echo "path: ".$path; // ''/www/public_html/index''
$page = substr(strrchr($path, "/"), 1);
echo "page: ".$page; // ''index''
}
$my_page_id = 31;
$my_page = ''mypage'';
//echo "page: ".$page;
//echo "page_id ".$page_id;
if($page_id == $my_page_id || $page == $my_page)
{
// your stuff....
}
¡Disfrutar!
También puede crear una función genérica para obtener el ID de la publicación, ya sea dentro o fuera del bucle (maneja ambos casos):
<?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;
} ?>
Y simplemente hazlo:
$page_id = get_the_post_id();
Use esta $ publicación global en su lugar:
global $post;
echo $post->ID;
Utilice a continuación dos líneas de código para obtener la página actual o ID de la publicación
global $post;
echo $post->ID;