web-dev-qa-db-fra.com

Comment ajouter un PHP page à WordPress?

Je souhaite créer une page personnalisée pour mon blog WordPress, qui exécutera mon code PHP, tout en faisant partie de l'ensemble du site CSS/theme/design.

Le code PHP utilisera des API tierces (je dois donc inclure d'autres fichiers PHP).

Comment puis-je accomplir cela?

N.B. Je n'ai pas de besoin spécifique d'interagir avec l'API Wordpress - à part l'inclusion de certaines autres bibliothèques PHP dont j'ai besoin, je n'ai aucune autre dépendance dans le code PHP que je souhaite inclure dans un WP page. Il est donc évident que toute solution ne nécessitant pas l’apprentissage de l’API WP serait la meilleure.

223
rutherford

Vous n'avez pas besoin d'interagir avec l'API ou d'utiliser un plugin.

Commencez par dupliquer post.php ou page.php dans votre dossier de thèmes (sous /wp-content/themes/themename/).

Renommez le nouveau fichier en templatename.php (où nom_modèle correspond à ce que vous souhaitez appeler votre nouveau modèle). Pour ajouter votre nouveau modèle à la liste des modèles disponibles, entrez les informations suivantes en haut du nouveau fichier:

<?php
/*
Template Name: Name of Template
*/
?>

Vous pouvez modifier ce fichier (en utilisant PHP) pour inclure d'autres fichiers ou tout ce dont vous avez besoin.

Créez ensuite une nouvelle page dans votre blog WordPress. Dans l'écran de modification de page, un menu déroulant Template apparaît dans le widget Attributes à droite. Sélectionnez votre nouveau modèle et publiez la page.

Votre nouvelle page utilisera le code PHP défini dans templatename.php

Source: https://developer.wordpress.org/themes/template-files-section/page-template-files/#creating-custom-page-templates-for-global-use

355
Adam Hopkinson

Si vous voulez créer votre propre fichier .php et interagir avec Wordpress sans les en-têtes 404 et en conservant votre structure permalien actuelle, il n'est PAS nécessaire de disposer d'un fichier modèle pour cette page, j'ai constaté que cette approche fonctionnait mieux dans votre fichier .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();
?>

Ensuite, vous pouvez simplement exécuter n'importe quelle fonction wordpress après cela. En outre, cela suppose que votre fichier .php se trouve à la racine de votre site wordpress où se trouve votre fichier wp-config.php.

Ceci, pour moi, est une découverte SANS PRIX car j’utilisais require_once(dirname(__FILE__) . '/wp-blog-header.php'); depuis très longtemps car Wordpress vous dit même que c’est l’approche que vous devez utiliser pour intégrer les fonctions Wordpress, mais il provoque 404 en-têtes, ce qui est bizarre. veux que vous utilisiez cette approche. https://codex.wordpress.org/Integrating_WordPress_with_Your_Website

Je sais que beaucoup de personnes ont répondu à cette question et que sa réponse est déjà acceptée, mais voici une approche intéressante pour un fichier .php dans la racine de votre site wordpress (ou techniquement où vous le souhaitez sur votre site), que vous pouvez consulter et charge sans 404 en-têtes!

MODIFIER

Juste une mise à jour rapide ici. Il existe un moyen d'utiliser wp-blog-header.php sans les en-têtes 404, mais cela nécessite l'ajout manuel des en-têtes, ce qui fonctionnera à la racine de votre installation 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();
?>

Juste pour vous mettre à jour, un peu moins de code est nécessaire pour cette approche, mais c'est à vous de choisir celui que vous utilisez.

23
Solomon Closson

Si vous êtes comme moi, vous souhaitez parfois pouvoir référencer des fonctions WordPress dans une page qui n'existe pas dans le CMS. De cette façon, il reste spécifique au backend et ne peut pas être supprimé accidentellement par le client.

Ceci est en fait simple à faire en incluant simplement le fichier wp-blog-header.php en utilisant un php require().

Voici un exemple qui utilise une chaîne de requête pour générer des données Facebook OG pour toute publication. 

Prenons l'exemple d'un lien comme http://example.com/yourfilename.php?1, où 1 est l'ID d'une publication pour laquelle nous souhaitons générer des données OG:

Maintenant dans le contenu de yourfilename.php qui, pour notre commodité, est situé dans le répertoire racine 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>

Voilà: des modèles de partage générés pour tout message en utilisant son image, extrait et titre réels! 

Nous aurions pu créer un modèle spécial et éditer la structure de lien permanent pour le faire, mais comme cela n’est nécessaire que pour une page et que nous ne voulons pas que le client le supprime depuis le CMS, cela semblait être l’option de nettoyage.


EDIT 2017:Veuillez noter que cette approche est maintenant obsolète

Pour WP installations à partir de 2016, consultez https://stackoverflow.com/a/39800534/1958998 pour connaître les paramètres supplémentaires à inclure avant de générer les données de votre page dans le navigateur.

14
DrewT

La création de la page de modèle est la bonne réponse, pour cela, ajoutez-la simplement dans la page que vous avez créée dans le dossier du thème.

<?php
/*
Template Name: mytemplate
*/
?>

Pour exécuter ce code, vous devez sélectionner mytemplate en tant que modèle de la page à partir de l’arrière-plan. 

veuillez consulter ce lien pour obtenir les détails corrects https://developer.wordpress.org/themes/template-files-section/page-template-files/page-templates/

7
user5742826

Aucune réponse ne couvre si vous devez ajouter une page PHP en dehors du thème WordPress. Ceci est le chemin.

Vous devez inclure wp-load.php.

<?php require_once('wp-load.php'); ?>

Ensuite, vous pouvez utiliser n’importe quelle fonction WordPress sur cette page.

La réponse largement acceptée de Adam Hopkinson n'est pas une méthode entièrement automatisée pour créer une page! il faut qu'un utilisateur crée manuellement une page dans le back-end de WordPress (dans le tableau de bord wp-admin). Le problème avec cela est qu'un bon plugin devrait avoir une configuration entièrement automatisée, il ne devrait pas obliger les clients à créer manuellement des pages.

En outre, certaines des autres réponses largement acceptées ici impliquent la création d'une page statique en dehors de WordPress, qui n'inclut alors qu'une partie des fonctionnalités de WordPress pour réaliser l'en-tête et le pied de page thématiques. Bien que cette méthode puisse fonctionner dans certains cas, cela peut rendre très difficile l’intégration de ces pages avec WordPress sans l’inclusion de toutes ses fonctionnalités. 

Je pense que la meilleure approche, entièrement automatisée, serait de créer une page en utilisant wp_insert_post et de la placer dans la base de données. Vous trouverez un exemple et une bonne discussion à ce sujet sur la prévention de la suppression accidentelle de la page par un utilisateur: wordpress-automatic-Creating-Creating-Page

Franchement, je suis surpris que cette approche n'ait pas déjà été mentionnée comme une réponse à cette question populaire (elle est publiée depuis 7 ans).

1
Damian Green

Vous voudrez jeter un coup d'œil à l'API du plugin WordPress. Ceci explique comment "accrocher" et "filtrer" dans différentes parties de la mécanique WordPress, afin que vous puissiez exécuter du code personnalisé PHP à peu près n'importe où et à n'importe quel moment. Ces opérations de raccordement, de filtrage et de création de code personnalisé peuvent toutes avoir lieu dans votre fichier functions.php dans l’un de vos thèmes. Bonne codage :)

1
hsatterwhite

Créez une page, appelez-la my-page.php et enregistrez-la dans votre répertoire de thème . Modifiez maintenant ce fichier php et écrivez la ligne suivante en haut de la page.

<?php /* Template Name: My Page */ ?>

Écrivez votre code PHP sous la ligne de définition de page personnalisée, vous pouvez appeler votre autre modèle WP, fonctions à l'intérieur de ce fichier.

Commencez comme <?php require_once("header.php");?> OU

quelle que soit la manière dont vous intégrez votre en-tête et votre pied de page pour maintenir la mise en page cohérente.

Comme il s’agit de ma page, vous devez créer une page à partir du panneau d’administration de WordPress . Allez à Admin => Pages => Ajouter un nouveau

Ajoutez un titre de page. En fonction de la manière dont vous avez codé la page personnalisée, vous pouvez également ajouter le corps de la page (description). Vous pouvez entièrement ignorer la description si elle est écrite dans la page php personnalisée.

À droite, sélectionnez Modèle . Choisissez Ma page personnalisée dans le menu déroulant . Vous êtes tous ensemble! Allez sur le slug (permalien) créé par [wordpress] [1] et voyez la page.

1
ashish thakor

Vous pouvez créer le modèle dans le Dossier du thème après avoir placé votre code php dans ce fichier de modèle.

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();
0
Mehul Soni

Essaye ça:

/**
 * The template for displaying demo page
 *
 * template name: demo template
 *
 */
0
Heena Patel

Outre la création d'un fichier de modèle personnalisé et l'affectation de ce modèle à une page (comme dans l'exemple de réponse acceptée), il existe également un moyen de convention de dénomination de modèle utilisé par Wordpress pour le chargement des modèles (hiérarchie de modèles). Créez une nouvelle page et utilisez le slug de cette page comme nom de fichier de modèle (créez un fichier de modèle nommé page- {slug} .php ). WordPress chargera automatiquement le modèle qui correspond à cette règle.

0
Danijel

La meilleure façon d'ajouter des pages PHP dans WordPress à Page Template dans le dossier child-theme.

Comment créer Page Template dans WordPress.

Créez un fichier nommé template-custom.php et mettez-le dans /wp-content/theme/my-theme/.

<?php
 /*
 * Template Name: Custom Template
 * Custom template used for custom php code display
 * @package   Portafolio WordPress Theme
 * @author    Gufran Hasan
 * @copyright Copyright templatecustom.com
 * @link      http://www.templatecustom.com
 */
?>
<?php get_header(); ?>
<?php
  //write code here

 ?>

<?php get_footer(); ?>

Pour plus de détails

0
Gufran Hasan

Si vous ne voulez pas utiliser l'API WP, alors la réponse d'Adam est vraiment la meilleure.

Si vous vouliez utiliser l'API, je vous suggérerais de vous connecter au crochet "template-redirect", ce qui vous permettrait de pointer une URL ou une page particulière vers un fichier PHP quelconque tout en ayant accès au WP.

0
Stephen R

il suffit de créer une page-mytitle.php dans le thème du thème actuel et, dans le tableau de bord, une page mytitle. Ensuite, lorsque vous appelez la page par l’URL, vous verrez le page-mytitle.php. Vous devez ajouter htmp, css, js wp-loop e.t.c à ce fichier php (page-mytitle.php)

0
Elias Katsaniotis

Renommez le nouveau fichier en tant que nom de modèle.php (où nom de modèle correspond à ce que vous souhaitez appeler votre nouveau modèle). Pour ajouter votre nouveau modèle à la liste des modèles disponibles, entrez les informations suivantes en haut du nouveau fichier:

Vous pouvez modifier ce fichier (en utilisant PHP) pour inclure d’autres fichiers ou tout ce dont vous avez besoin.

Créez ensuite une nouvelle page dans votre blog WordPress. Dans l’écran de modification de page, vous verrez une liste déroulante Modèle dans le widget Attributs à droite. Sélectionnez votre nouveau modèle et publiez la page.

0
Nirav Webbleu