Comment ajouter une page PHP à WordPress?

je veux créer une page personnalisée pour mon blog WordPress qui exécutera mon code PHP dedans, tout en restant une partie de l'ensemble du site CSS/thème/design.

le code PHP utilisera des API tiers (donc je dois inclure d'autres fichiers PHP)

Comment faire?

N.B. Je n'ai pas un besoin spécifique d'interagir avec L'API Wordpress - en dehors d'inclure certains autres libs PHP dont j'ai besoin je n'ai pas d'autres les dépendances dans le code PHP que je veux inclure dans une page WP. Donc évidemment, toute solution qui ne nécessite pas l'apprentissage de L'API WP serait la meilleure.

213
demandé sur Volker E. 2010-05-11 15:12:24

16 réponses

vous n'avez pas besoin d'interagir avec L'API ou d'utiliser un plugin.

d'abord, dupliquez post.php ou page.php dans votre dossier thématique (sous /wp-content/themes/themename/ ).

renommer le nouveau fichier en templatename.php (où templatename est ce que vous voulez appeler votre nouveau modèle). Pour ajouter votre nouveau modèle à la liste des modèles disponibles, entrez ce qui suit 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.

puis créez une nouvelle page dans votre blog WordPress, et dans l'écran d'édition de page vous verrez un Template dropdown dans le attributs widget à 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

334
répondu Adam Hopkinson 2018-06-24 21:49:00

si vous voulez créer votre propre .php file et interagir avec Wordpress sans 404 en-têtes et en gardant votre structure permalink actuelle il n'y a pas besoin d'un fichier de modèle pour cette page 1, j'ai trouvé que cette approche fonctionne 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();
?>

Que vous pouvez simplement effectuer toutes les fonctions de wordpress. Aussi, cela suppose que votre .le fichier php est à la racine de votre site wordpress où se trouve votre fichier wp-config.php .

cela, pour moi, est une découverte inestimable que j'utilisais require_once(dirname(__FILE__) . '/wp-blog-header.php'); pour la plus longue période car Wordpress vous dit même que c'est l'approche que vous devriez utiliser pour intégrer les fonctions Wordpress, cept, il provoque 404 en-têtes, ce qui est étrange qu'ils voudraient que vous utilisiez cette approche. https://codex.wordpress.org/Integrating_WordPress_with_Your_Website

je sais que beaucoup de gens ont répondu à cette question et il a déjà une réponse acceptée, mais voici une bonne approche pour A.le fichier php dans la racine de votre site wordpress (ou techniquement partout où vous voulez dans votre site), que vous pouvez parcourir et charger sans 404 en-têtes!

MODIFIER

Juste une mise à jour rapide ici. Il y a une façon d'utiliser wp-blog-header.php sans headers 404, mais cela nécessite que vous ajoutiez les headers manuellement, quelque chose comme ça va fonctionner à 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 sur ceci, un peu moins de code nécessaire pour cette approche, mais c'est à vous sur lequel 1 vous utilisez.

16
répondu Solomon Closson 2018-03-09 04:25:02

si vous êtes comme moi, parfois vous voulez pouvoir faire référence à 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 accidentellement supprimé par le client.

c'est en fait simple à faire juste en incluant 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 og Facebook pour n'importe quel message.

Take l'exemple d'un lien comme http://example.com/yourfilename.php?11 est L'ID D'un post que nous voulons générer des données OG pour:

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>

là vous l'avez: généré des modèles de partage pour n'importe quel poste en utilisant l'image réelle du poste, l'extrait et le titre!

nous aurions pu créer un modèle spécial et éditer la structure permalink pour faites ceci, mais puisque c'est seulement nécessaire pour une page et parce que nous ne voulons pas que le client l'efface de l'intérieur du CMS, cela semble être l'option plus propre.


modifier 2017: veuillez noter que cette approche est maintenant dépréciée

pour les installations de WP à partir de 2016 + Voir https://stackoverflow.com/a/39800534/1958998 pour les paramètres supplémentaires incluez avant d'envoyer vos données de page au navigateur.

13
répondu DrewT 2017-08-24 21:51:45

créer la page modèle est la bonne réponse, pour cela il suffit de l'ajouter dans la page que vous avez créée à l'intérieur du dossier thème

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

pour exécuter ce code, vous devez sélectionner mytemplate comme modèle de la page à partir de la fin

s'il vous plaît voir ce lien pour obtenir les informations correctes https://developer.wordpress.org/themes/template-files-section/page-template-files/page-templates/ .

7
répondu 2016-01-09 13:59:00

N'importe quelle réponse n'a pas couvert si vous avez besoin d'ajouter une page PHP en dehors du thème WordPress. C'est la manière.

vous devez inclure wp-load.php.

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

alors vous pouvez utiliser n'importe quelle fonction WordPress sur cette page.

2
répondu I am the Most Stupid Person 2018-03-30 11:11:10

vous aurez envie de jeter un oeil à L'API de plugin WordPress. Cela explique comment "accrocher" et "filtrer" dans différentes parties de la mécanique WordPress, afin que vous puissiez exécuter du code PHP personnalisé à peu près n'importe où à tout moment donné. Cette hooking, filtrage, et création de code personnalisé peuvent tous avoir lieu dans vos fonctions.php fichier dans l'un de vos thèmes. Heureux de codage :)

1
répondu hsatterwhite 2010-05-11 12:03:47

la réponse largement acceptée par Adam Hopkinson n'est pas une méthode entièrement automatisée de créer une page! il nécessite un utilisateur de créer manuellement une page dans le back-end de WordPress (dans le wp-admin dash). Le problème avec cela est, un bon plugin devrait avoir une configuration entièrement automatisée, il ne devrait pas exiger des clients de créer des pages manuellement.

aussi, certaines des autres réponses largement acceptées ici impliquent la création d'une page statique en dehors de WordPress, qui ne comprend alors que certaines des fonctionnalités WordPress pour atteindre l'en-tête thématique et le pied de page. Bien que cette méthode puisse fonctionner dans certains cas, cela peut rendre l'intégration de ces pages avec WordPress très difficile sans avoir toutes ses fonctionnalités incluses.

je pense que la meilleure approche, entièrement automatisée, serait de créer une page en utilisant wp_insert_post et de la faire résider dans la base de données. Un exemple et un grand débat à ce sujet, et comment empêcher la suppression accidentelle de la page par un utilisateur, peuvent être trouvées ici: wordpress-automatiquement-la création-la page

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

1
répondu Damian Green 2017-08-05 17:41:05

créer une page appelez-la my-page.php et l'enregistrer sous votre répertoire de thème. Maintenant, éditez 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.

commence comme <?php require_once("header.php");?> ou

quelle que soit la façon dont vous intégrez votre en-tête et le pied de page pour garder la mise en page cohérent.

comme il s'agit d'une Ma page, vous devez créer une PAGE à partir du panneau d'administration WordPress. Aller à Admin = > Pages = > Ajouter un nouveau

Ajouter un titre de page, en fonction de la façon dont vous avez codé la page personnalisée, vous pouvez ajouter le corps de page (description) ainsi. Vous pouvez complètement sauter la description si elle est écrite dans la page PHP personnalisée.

sur le côté droit, sélectionnez Modèle. Choisissez Ma page personnalisée dans la liste déroulante. Vous êtes tous ensemble! Aller à la limace (permalink) créé par [wordpress][1] et voir la page.

1
répondu ashish thakor 2018-07-26 06:23:01

si vous ne voulez pas traiter avec L'API WP, alors la réponse D'Adam est vraiment la meilleure.

si vous étiez prêt à traiter avec 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 arbitraire tout en ayant toujours accès au WP.

0
répondu Stephen R 2010-05-12 15:24:15

outre la création d'un fichier de template personnalisé et l'assignation de ce template à une page ( comme dans l'exemple dans accepted answer ), il y a aussi un moyen avec la convention de nommage de template que Wordpress utilise pour le chargement des templates ( hiérarchie de template ). Créer une nouvelle page et utiliser le slug de cette page pour le nom de fichier de Modèle ( créer le fichier de modèle nommé page-{slug}.php ). WordPress chargera automatiquement le modèle qui correspond à cette règle.

0
répondu Danijel 2015-09-14 16:22:57

essayez ceci:

/**
 * The template for displaying demo page
 *
 * template name: demo template
 *
 */
0
répondu Heena Patel 2017-07-11 10:54:13

renommer le nouveau fichier templatename.php (où templatename est ce que vous voulez appeler votre nouveau modèle). Pour ajouter votre nouveau modèle à la liste des modèles disponibles, entrez ce qui suit 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.

ensuite créer une nouvelle page dans votre blog WordPress, et dans l'écran d'édition de page, vous verrez un modèle de menu déroulant dans les attributs widget vers la droite. Sélectionnez votre nouveau modèle et publiez la page.

0
répondu Nirav Webbleu 2018-02-20 09:05:34

il suffit de créer une page-mytitle.php pour le folter de thème en cours, et à partir du tableau de bord une page mytitle. Ensuite, lorsque vous appelez la page par l'url que vous allez voir la page-mytitle.php. Vous devez ajouter htmp, css, js wp-boucle électronique.t.c à ce fichier php (page-mytitle.php)

0
répondu Elias Katsaniotis 2018-09-28 09:51:04

Vous pouvez nommer votre fichier newpage.php - mettez-le dans votre répertoire de thème dans wp-content. Vous pouvez en faire un modèle de page (voir http://codex.wordpress.org/Pages .. .) ou vous pouvez l'inclure dans l'un des fichiers php dans votre thème, comme la tête.php ou simple.php. Encore mieux, créez un thème enfant et mettez-le là-dedans, de sorte que vous laissez votre code de thème seul et il est plus facile de le mettre à jour.

http://codex.wordpress.org/Pages#Creating_Your_Own_Page_Templates

-1
répondu Chandra Kumar 2016-01-02 10:12:54
<?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(); ?>
-1
répondu Ahmed Elcheikh 2017-01-05 08:45:50

vous pouvez également utiliser directement la page php, comme pour créer la page php et exécuter avec le chemin complet. comme, http://localhost/path/filename.php

-3
répondu nim 2015-11-17 07:50:38