Cum să obții ID-ul paginii curente și să îl folosești în funcția get_page

26 ian. 2011, 12:12:38
Vizualizări: 19.8K
Voturi: 3

Exemplu de cod:

$page_id = 116; // 123 trebuie înlocuit cu ID-ul specific al Paginii din site-ul tău, pe care îl poți găsi trecând cu mouse-ul peste link-ul de editare al acelei Pagini din panoul admin Gestionare Pagini. ID-ul va fi în query string-ul URL-ului, ex. page.php?action=edit&post=123.
$page_data = get_page( $page_id ); // Trebuie să transmiți o variabilă funcției get_page. Dacă transmiți o valoare directă (ex. get_page ( 123 ); ), WordPress va genera o eroare.

$content = apply_filters('the_content', $page_data->post_content); // Obține Conținutul și păstrează filtrele WordPress precum tag-urile de paragraf. Sursa: http://wordpress.org/support/topic/get_pagepost-and-no-paragraphs-problem
$title = $page_data->post_title; // Obține titlul
echo $title; // Afișează Titlul
echo $content; // Afișează Conținutul
?>

În loc de 166 (care a fost introdus manual), aș dori să obțin ID-ul paginii curente.

Când folosesc $page_id = $post -> ID se obține titlul și conținutul primei postări din bucla de mai jos (aceasta este pagina de postări):

<div class="container">
                <?php // găsește tot conținutul care are tipul video și apoi parcurge-l în buclă ?>
                <?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>

Aș dori să obțin codul paginii curente în mod dinamic (care este 116).

Care este codul pentru a realiza acest lucru?

0
Toate răspunsurile la întrebare 5
0

Din teste rapide, $wp_query->get_queried_object_id() ar trebui să obțină ID-ul paginii atunci când acea pagină este setată să fie pagina de articole.

Este probabil o problemă de timing - trebuie să fie apelat suficient de târziu pentru a fi disponibil, dar suficient de devreme încât bucla de articole să nu interfereze. Aș încerca să capturez valoarea devreme (în hook-ul template_redirect sau în jurul acelui moment) și să o stochez într-o variabilă globală pentru a o folosi mai târziu.

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

dar dacă folosești o pagină personalizată pentru articole, unde adaugi acest cod?

26 ian. 2011 13:59:21
Comentarii

Este o pagină folosită pentru a afișa articolele de blog.

wyc wyc
28 ian. 2011 16:14:37
3

Există două metode, în funcție de dacă faci acest lucru în interiorul sau în afara buclei.

În interior: $page_id = $post->ID; (pe care l-ai menționat, fără succes, așa că voi presupune că încerci alternativa care este...)

În afara: $page_id = $wp_query->post->ID;

26 ian. 2011 12:52:50
Comentarii

nu contează ce fac, tot primește postările din bucla de sub acea funcție.

wyc wyc
26 ian. 2011 12:57:29

Dacă folosești acel al doilea bloc de cod în aceeași pagină ca funcția ta get_page, atunci cel mai probabil funcția query_posts este cea care deranjează totul. Va trebui fie să creezi o interogare personalizată, fie să resetezi bucla. Încearcă să comentezi al doilea bloc din șablon (pentru a preveni execuția codului php) pentru a vedea dacă funcționează.

Mike Hudson Mike Hudson
26 ian. 2011 13:06:48

nu contează dacă șterg a doua buclă. Pagina este setată să fie pagina de postări, așa că cred că bucla este aplicată "global sau ceva de genul".

wyc wyc
26 ian. 2011 13:15:55
0

Am înlocuit:

$page_id = [id of post];

cu:

$page_id = $wp_query->get_queried_object_id();

A funcționat pentru mine!

7 oct. 2011 20:46:40
0

Pentru cei dintre voi pentru care această soluție încă nu funcționează, va trebui să utilizați un fel de add_action (puteți alege pe care doriți să-l folosiți). În exemplul meu, acest cod va returna ID-ul paginii curente fără probleme, indiferent dacă vă aflați într-un folder de plugin, în functions.php sau în altă parte.

add_action('template_redirect', 'showid');

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

Mult succes și codare plăcută!

6 aug. 2021 12:40:18