¿Cómo obtener el ID actual de una Página específica y usarlo en una función get_page?

26 ene 2011, 12:12:38
Vistas: 19.8K
Votos: 3

Ejemplo del código:

$page_id = 116; // 123 debe reemplazarse con el ID específico de la Página de tu sitio, que puedes encontrar al pasar el mouse sobre el enlace para editar esa Página en la página de administración. El ID estará incrustado en la cadena de consulta de la URL, por ejemplo page.php?action=edit&post=123.
$page_data = get_page( $page_id ); // Debes pasar una variable a la función get_page. Si pasas un valor (por ejemplo get_page ( 123 ); ), WordPress generará un error.

$content = apply_filters('the_content', $page_data->post_content); // Obtener Contenido y mantener los filtros de WordPress como las etiquetas de párrafo. Origen: http://wordpress.org/support/topic/get_pagepost-and-no-paragraphs-problem
$title = $page_data->post_title; // Obtener título
echo $title; // Mostrar Contenido
echo $content; // Mostrar Contenido
?>

En lugar de 166 (que fue ingresado manualmente), me gustaría obtener el ID de la página actual.

Cuando hago $page_id = $post -> ID recupera el título y contenido del primer post del bucle de abajo (esta es la página de posts):

<div class="container">
                <?php // buscar todo el contenido que tiene el tipo de video y luego recorrerlo en bucle ?>
                <?php query_posts('showpost'); ?>

                <?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>

                                <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                                    <?php if ( is_front_page() ) { ?>
                                        <h2 class="entry-title"><?php the_title(); ?></h2>
                                    <?php } else { ?>
                                        <h1 class="entry-title"><?php the_title(); ?></h1>
                                    <?php } ?>

                                    <div class="entry-content">
                                        <?php the_content(); ?>
                                        <?php wp_link_pages( array( 'before' => '<div class="page-link">' . __( 'Pages:', 'twentyten' ), 'after' => '</div>' ) ); ?>
                                            <?php edit_post_link( __( 'Edit', 'twentyten' ), '<span class="edit-link">', '</span>' ); ?>
                                        </div><!-- .entry-content -->
                                    </div><!-- #post-## -->

                                    <?php comments_template( '', true ); ?>

                    <?php endwhile; ?>
        </div>

Me gustaría obtener el código de la página actual dinámicamente (que es 116).

¿Cuál es el código para lograr esto?

0
Todas las respuestas a la pregunta 5
0

Desde una prueba rápida, $wp_query->get_queried_object_id() debería obtener el ID de la página cuando esa página está configurada como página de entradas.

Probablemente sea un problema de tiempo, que esté disponible lo suficientemente tarde pero lo suficientemente temprano para que el bucle de entradas no interfiera. Intentaría capturarlo temprano (en el hook template_redirect o alrededor de ese momento) y almacenarlo en una variable global para usarlo más tarde.

27 mar 2011 16:17:28
1
global $wp_query;
$page_id = $wp_query->get_queried_object_id();

pero si estás usando una página personalizada para las entradas, ¿dónde estás agregando este código?

26 ene 2011 13:59:21
Comentarios

Es una página utilizada para mostrar entradas de blog.

wyc wyc
28 ene 2011 16:14:37
3

Hay dos métodos, dependiendo de si estás haciendo esto dentro o fuera del bucle (loop).

Dentro del bucle: $page_id = $post->ID; (que ya mencionaste, sin éxito, así que asumiré que estás intentando la alternativa que es...)

Fuera del bucle: $page_id = $wp_query->post->ID;

26 ene 2011 12:52:50
Comentarios

No importa lo que haga, sigue recuperando las publicaciones del bucle debajo de esa función.

wyc wyc
26 ene 2011 12:57:29

Si estás usando ese segundo bloque de código en la misma página que tu función get_page, entonces lo más probable es que sea la función query_posts la que está alterando todo. Tendrás que crear una consulta personalizada o reiniciar el bucle. Prueba a comentar el segundo bloque en la plantilla (para evitar que se ejecute el php) para ver si funciona.

Mike Hudson Mike Hudson
26 ene 2011 13:06:48

No importa si elimino el segundo bucle. La página está configurada para ser la página de publicaciones, así que creo que el bucle se está aplicando "globalmente o algo así".

wyc wyc
26 ene 2011 13:15:55
0

Reemplacé:

$page_id = [id de la publicación];

con:

$page_id = $wp_query->get_queried_object_id();

¡Funcionó para mí!

7 oct 2011 20:46:40
0

Para aquellos a quienes esto todavía no les funcione, necesitarán usar algún tipo de add_action (puedes elegir cuál quieres usar). En mi ejemplo, esto devolverá el ID de la página actual sin problemas, independientemente de si estás en una carpeta de plugin, functions.php o cualquier otro lugar.

add_action('template_redirect', 'showid');

function showid(){
    global $wp_query;
    $theid = intval($wp_query->queried_object->ID);
    echo $theid;
}

¡Buena suerte y feliz codificación!

6 ago 2021 12:40:18