Como obter a ID da página incluída com get_page ()?

Estou reescrevendo a questão, incluindo o código exemplar, espero que seja mais fácil de entender agora.

1. Meu shortcode:

function testid_shortcode( ) { global $post; return $post->ID; } add_shortcode('testid', 'testid_shortcode'); 

2. O problema:

Estou usando o shortcode na página Example1 [ID = 1]:

 [testid] 

Então eu estou incluí-lo na página diferente Exemplo 2 [ID = 2]:

 $included_page = get_page( $included_id ); $content = apply_filters('the_content', $included_page->post_content); 

O código curto retorna “1” e “2” nestas páginas, enquanto eu quero que ele retorne “1” E “1”, então simplesmente falando eu quero que ele recupere o ID (especificamente metaboxes) da página “original”.

É possível corrigi-lo de alguma forma? Eu acho que deve ser feito dentro do shortcode em si, mas não tenho absolutamente nenhuma idéia de como. Acho que passar uma variável com o ID “original” e sobrescrever o código curto deixa fazer o truque, mas como fazer isso?

Solutions Collecting From Web of "Como obter a ID da página incluída com get_page ()?"

O object $ post global é da consulta atual, então o que você está vendo é o comportamento esperado.

Se você quer sempre que o shortcode devolva o post_meta de ID = 1, então você deve apenas codificar isso no shortcode como na resposta do @ Chris_O, onde você apenas salva uma variável igual a 1 e passa isso para get_page() .

No entanto, parece que você está procurando atributos de shortcode . Tente isso:

 // shortcode function function testid_shortcode( $atts ) { // extract the variables, if there is no ID attr, the default is 1 extract( shortcode_atts( array( 'id' => 1 ), $atts ) ); // set page id to either the id attr which defaults to one. $page_id = $id; $page_data = get_page( $page_id ); return // ... return something with your shortcode } // register the shortcode add_shortcode( 'testid', 'testid_shortcode' ); 

Então você poderia usar:

 [testid] 

Para retornar o object de postagem com ID = 1 ou

 [testid id=2] 

para retornar o object de postagem com ID = 2.

get_page requer o ID da página para passar por uma variável.

Você está dando uma string que está fazendo com que o WordPress use a variável a partir da global $page->ID no momento em que a function é chamada.

Basta passar no ID da página como uma variável e deve funcionar bem.

 $page_id = 1; $page_data = get_page( $page_id );