plugin - tag.php wordpress
¿Cómo agregar una página PHP a WordPress? (16)
Quiero crear una página personalizada para mi blog de WordPress que ejecutará mi código PHP en él, sin dejar de ser parte del sitio / diseño / CSS global.
El código PHP utilizará las API de terceros (por lo que debo incluir otros archivos PHP)
¿Cómo logro esto?
NB No tengo una necesidad específica de interactuar con la API de Wordpress, además de incluir otras librerías de PHP que necesito, no tengo otras dependencias en el código de PHP que quiero incluir en una página de WP. Obviamente, cualquier solución que no requiera aprender la API de WP sería la mejor.
¡La respuesta ampliamente aceptada de Adam Hopkinson no es un método completamente automatizado para crear una página! requiere que un usuario cree manualmente una página en el back-end de WordPress (en el guión de wp-admin). El problema con eso es que un buen complemento debe tener una configuración completamente automatizada, no debe requerir que los clientes creen páginas manualmente.
Además, algunas de las otras respuestas ampliamente aceptadas aquí implican la creación de una página estática fuera de WordPress, que luego incluye solo algunas de las funciones de WordPress para lograr el encabezado temático y el pie de página. Si bien ese método puede funcionar en algunos casos, esto puede hacer que la integración de estas páginas con WordPress sea muy difícil sin tener incluida toda su funcionalidad.
Creo que el mejor enfoque, completamente automatizado, sería crear una página usando wp_insert_post
y hacer que resida en la base de datos. Aquí se puede encontrar un ejemplo y una gran discusión acerca de eso, y cómo evitar que un usuario elimine accidentalmente la página: wordpress-automatically-creating-page
Francamente, me sorprende que este enfoque no haya sido mencionado ya como respuesta a esta pregunta popular (se ha publicado durante 7 años).
Además de crear un archivo de plantilla personalizado y asignar esa plantilla a una página (como en el ejemplo de respuesta aceptada), también existe una forma de convención de nomenclatura de plantillas que Wordpress usa para cargar plantillas (jerarquía de plantillas). Cree una nueva página y use la barra de esa página para el nombre de archivo de la plantilla (cree una plantilla de archivo llamada page- {slug} .php ). WordPress cargará automáticamente la plantilla que se ajuste a esta regla.
Cambie el nombre del nuevo archivo como templatename.php (donde templatename es lo que desea llamar a su nueva plantilla). Para agregar su nueva plantilla a la lista de plantillas disponibles, ingrese lo siguiente en la parte superior del nuevo archivo:
Puede modificar este archivo (usando PHP) para incluir otros archivos o lo que necesite.
Luego cree una nueva página en su blog de WordPress, y en la pantalla de edición de la página verá un menú desplegable de plantillas en el widget de atributos a la derecha. Selecciona tu nueva plantilla y publica la página.
Crea una página, llámala my-page.php y guárdala en tu directorio de temas. Ahora, edite este archivo php y escriba la siguiente línea en la parte superior de la página
<?php /* Template Name: My Page */ ?>
Escriba su código PHP en la línea de definición de página personalizada, puede llamar a su otra plantilla WP, funciones dentro de este archivo.
Comience como <?php require_once("header.php");?>
O
De cualquier manera, está integrando su encabezado y pie de página para mantener el diseño consistente.
Dado que esta es mi página, NECESITA CREAR UNA PÁGINA desde el panel de administración de WordPress. Vaya a Admin => Pages => Add New
Agregue un título de página, dependiendo de cómo haya codificado la página personalizada, también puede agregar el cuerpo de la página (descripción). Puede omitir completamente la descripción si está escrita en la página php personalizada.
En el lado derecho, seleccione Plantilla. Seleccione Mi página personalizada en el menú desplegable. ¡Estas listo! Vaya a la barra (enlace permanente) creada por [wordpress] [1] y vea la página.
Crear la página de la plantilla es la respuesta correcta, para esto solo agréguelo a la página que creó dentro de la carpeta del tema
<?php
/*
Template Name: mytemplate
*/
?>
Para ejecutar este código, debe seleccionar mytemplate como plantilla de la página desde el back-end.
Consulte este enlace para obtener los detalles correctos https://developer.wordpress.org/themes/template-files-section/page-template-files/page-templates/ .
Cualquier respuesta no cubre si necesita agregar una página PHP fuera del tema de WordPress. Esta es la forma.
Necesitas incluir wp-load.php.
<?php require_once(''wp-load.php''); ?>
Entonces puedes usar cualquier función de WordPress en esa página.
No es necesario interactuar con la API o usar un complemento.
Primero, duplique post.php
o page.php
en su carpeta de temas (en /wp-content/themes/themename/
).
Cambie el nombre del nuevo archivo como templatename.php
(donde templatename es lo que desea llamar a su nueva plantilla). Para agregar su nueva plantilla a la lista de plantillas disponibles, ingrese lo siguiente en la parte superior del nuevo archivo:
<?php
/*
Template Name: Name of Template
*/
?>
Puede modificar este archivo (usando PHP) para incluir otros archivos o lo que necesite.
Luego cree una nueva página en su blog de WordPress, y en la pantalla de edición de la página verá un menú desplegable de plantillas en el widget de atributos a la derecha. Selecciona tu nueva plantilla y publica la página.
Tu nueva página utilizará el código PHP definido en templatename.php
Prueba esto:
/**
* The template for displaying demo page
*
* template name: demo template
*
*/
Puede nombrar su archivo newpage.php: póngalo en el directorio de temas en wp-content. Puede hacer que sea una plantilla de página (consulte http://codex.wordpress.org/Pages.. ) o puede incluirla en uno de los archivos php de su tema, como header.php o single.php. Aún mejor, cree un tema secundario y póngalo ahí, para que deje el código del tema solo y sea más fácil de actualizar.
http://codex.wordpress.org/Pages#Creating_Your_Own_Page_Templates
Si desea crear su propio archivo .php e interactuar con Wordpress sin 404 Encabezados y mantener su estructura actual de enlace permanente, NO hay necesidad de un archivo de plantilla para esa página 1, encontré que este enfoque funciona mejor en su archivo .php:
<?php
require_once(dirname(__FILE__) . ''/wp-config.php'');
$wp->init();
$wp->parse_request();
$wp->query_posts();
$wp->register_globals();
$wp->send_headers();
// Your Wordpress Functions here...
echo site_url();
?>
Que simplemente puede realizar cualquier función de wordpress después de esto. Además, esto supone que su archivo .php está dentro de la raíz de su sitio de wordpress donde se encuentra su archivo wp-config.php
.
Esto, para mí, es un descubrimiento require_once(dirname(__FILE__) . ''/wp-blog-header.php'');
ya que estaba usando require_once(dirname(__FILE__) . ''/wp-blog-header.php'');
Durante mucho tiempo, Wordpress incluso te dice que este es el enfoque que debes utilizar para integrar las funciones de Wordpress, por ejemplo, causa 404 encabezados, lo cual es extraño que quieran que uses este enfoque. https://codex.wordpress.org/Integrating_WordPress_with_Your_Website
Sé que mucha gente ha respondido a esta pregunta y ya tiene una respuesta aceptada, pero este es un buen enfoque para un archivo .php dentro de la raíz de su sitio de wordpress (o técnicamente en cualquier lugar que desee en su sitio), que puede buscar y carga sin 404 encabezados!
EDITAR
Sólo una actualización rápida aquí. Hay una forma de usar wp-blog-header.php
sin 404 encabezados, pero esto requiere que agregue los encabezados manualmente, algo como esto funcionará en la raíz de su instalación de wordpress:
<?php
require_once(dirname(__FILE__) . ''/wp-blog-header.php'');
header("HTTP/1.1 200 OK");
header("Status: 200 All rosy");
// Your Wordpress Functions here...
echo site_url();
?>
Solo para informarles a todos sobre esto, se necesita un poco menos de código para este enfoque, pero depende de usted en cuál de ellos use.
Si eres como yo, a veces quieres poder hacer referencia a las funciones de WordPress en una página que no existe en el CMS. De esta manera, sigue siendo específico para el backend y no puede ser eliminado accidentalmente por el cliente.
Esto es realmente simple de hacer simplemente incluyendo el archivo wp-blog-header.php
usando un php require()
.
Aquí hay un ejemplo que usa una cadena de consulta para generar datos de Facebook OG para cualquier publicación.
Tome el ejemplo de un enlace como http://example.com/yourfilename.php?1
donde 1
es el ID de una publicación para la que queremos generar datos OG para:
Ahora en el contenido de yourfilename.php
que, para nuestra conveniencia, se encuentra en el directorio raíz de WP:
<?php
require( dirname( __FILE__ ) . ''/wp-blog-header.php'' );
$uri = $_SERVER[''REQUEST_URI''];
$pieces = explode("?", $uri);
$post_id = intval( $pieces[1] );
// og:title
$title = get_the_title($post_id);
// og:description
$post = get_post($post_id);
$descr = $post->post_excerpt;
// og:image
$img_data_array = get_attached_media(''image'', $post_id);
$img_src = null;
$img_count = 0;
foreach ( $img_data_array as $img_data ) {
if ( $img_count > 0 ) {
break;
} else {
++$img_count;
$img_src = $img_data->guid;
}
} // end og:image
?>
<!DOCTYPE HTML>
<html>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=yes" />
<meta property="og:title" content="<?php echo $title; ?>" />
<meta property="og:description" content="<?php echo $descr; ?>" />
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="website" />
<meta property="og:url" content="<?php echo site_url().''/your_redirect_path''.$post_id; ?>" />
<meta property="og:image" content="<?php echo $img_src; ?>" />
<meta property="og:site_name" content="Your Title" />
</html>
Ahí lo tienes: modelos compartidos generados para cualquier publicación usando la imagen real, el extracto y el título de la publicación.
Podríamos haber creado una plantilla especial y haber editado la estructura de enlace permanente para hacer esto, pero como solo se necesita para una página y porque no queremos que el cliente la elimine desde el CMS, esta parecía la opción más limpia.
EDITAR 2017: Tenga en cuenta que este enfoque ahora está en desuso
Para instalaciones de WP a partir de 2016+, consulte https://.com/a/39800534/1958998 para conocer los parámetros adicionales que se deben incluir antes de enviar los datos de su página al navegador.
Si no quieres lidiar con la API de WP, entonces la respuesta de Adam es realmente la mejor.
Si estuviera dispuesto a lidiar con la API, sugeriría que se enganche en el enlace de "redireccionamiento de plantilla", lo que le permitiría apuntar una URL o página particular a un archivo PHP arbitrario mientras aún tiene acceso al WP.
También puede usar directamente la página php, como crear la página php y ejecutarla con la ruta completa. me gusta, http://localhost/path/filename.php
Usted querrá echar un vistazo a la API del plugin de WordPress. Esto explica cómo "enlazar" y "filtrar" a diferentes partes de la mecánica de WordPress, para que pueda ejecutar código PHP personalizado en cualquier lugar y en cualquier momento. Este enlace, filtrado y creación de código personalizado pueden tener lugar en su archivo functions.php en cualquiera de sus temas. Feliz codificacion :)
simplemente cree un page-mytitle.php a la parte del tema actual, y desde el Panel de control una página mytitle. Luego, cuando invocas la página por la url, verás el page-mytitle.php. Debe agregar htmp, css, js wp-loop, etc. a este archivo php (page-mytitle.php)
<?php /* Template Name: CustomPageT1 */ ?>
<?php get_header(); ?>
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<?php
// Start the loop.
while ( have_posts() ) : the_post();
// Include the page content template.
get_template_part( ''template-parts/content'', ''page'' );
// If comments are open or we have at least one comment, load up the comment template.
if ( comments_open() || get_comments_number() ) {
comments_template();
}
// End of the loop.
endwhile;
?>
</main><!-- .site-main -->
<?php get_sidebar( ''content-bottom'' ); ?>
</div><!-- .content-area -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>