O que é uma alternativa para get_page_by_title ()?

Estou codificando um tema onde eu quero exibir informações no rodapé que só está disponível em uma página de modelo. Eu tenho usado get_page_by_title() que funciona bem se você souber o que a página será chamada, mas na minha opinião não é muito dynamic, é impossível prever o que um usuário nomeará uma página em seu tema.

Na minha pesquisa, encontrei uma function chamada get_all_page_ids() que retorna uma matriz de IDs get_all_page_ids() indexada do site. Esta function seria muito mais legal se fosse um object associativo (ou mesmo um post), mas eu divago.

Eu considerei usar algo como isto:

 $all_page_ids = get_all_page_ids(); foreach ($all_page_ids as $id) { // get_post() {@link https://developer.wordpress.org/reference/functions/get_post/} $post_object = get_post($id); // preg_match() {@link http://php.net/manual/en/function.preg-match.php} if(preg_match("/\b(contact)\b/i", $post_object->post_title)) { // do something here } else { // for readability continue; } } 

No entanto, isso ainda cria o problema de ter que saber que o usuário escolheu ter a palavra contato em seu título. E se eles criassem uma página chamada “Get in Touch” que é a sua página de contato? Isso iria quebrar.

Então, em suma, minha pergunta gira em torno de melhores práticas para designers de temas. O get_page_by_title() a melhor maneira de obter a identificação de outra página, ou existe uma maneira de combinar algumas funções / variables ​​para obter a identificação de outra página sem saber o título?

Ou há funções do WordPress que fazem este tipo de levantamento pesado ou é get_page_by_title() o único próximo? Minha suspeição é que existe um hacker, mas uma maneira melhor de fazer isso, eu simplesmente não tenho ideias. Obrigado por qualquer ajuda que você possa dar sobre isso.

Solutions Collecting From Web of "O que é uma alternativa para get_page_by_title ()?"

Se você não forçar um título e, obviamente, não conhece o id, a única maneira de fazê-lo é deixando o usuário selecionar qual página usar, geralmente feita na página de opções do tema, mas pode ser feita no costumeiro , ou mesmo como parte da edição de página

Se sua página for uma página de modelo, você pode usar is_page_template($template_name)

Caso contrário, como Mark mencionou, você deve criar uma opção de tema e deixar o usuário decidir.

Mais: https://codex.wordpress.org/Function_Reference/is_page_template

ATUALIZAR

Eu mal interpretei sua pergunta. Você pode obter todas as páginas usando um determinado nome de modelo, mas novamente um usuário poderia fazer mais de uma dessas páginas com o mesmo modelo para que você não tenha certeza qual escolher.

  $args = array( 'meta_key' => '_wp_page_template', 'meta_value' => 'page-about.php', 'post_type' => 'page' ); $posts_array = get_posts( $args ); 

Outra idéia é criar sua página com o código na ativação do tema / plugin e, em seguida, salvar o ID como uma opção, mas também fornecer uma opção de tema ao usuário para alterar a página se ele / ela desejar. É assim que o WooCommerce funciona com a Página da Loja.

Novamente acredito que a abordagem de Mark é melhor e mais segura.