web-dev-qa-db-fra.com

Intégrer WordPress dans un site Web existant

J'ai essayé de lire le codex WordPress sur l'intégration de WordPress dans un site Web existant.

J'ai essayé d'utiliser les informations d'en-tête

<?php /* Short and sweet */ define('WP_USE_THEMES', false);
require('./wp-blog-header.php'); ?>

Et puis le code de test

<?php // Get the last 3 posts.
 global $post; $args = array( 'posts_per_page' => 3 ); 
$myposts = get_posts( $args ); 
foreach( $myposts as $post ) :  setup_postdata($post); ?> 
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a><br /> 
<?php endforeach; ?>

Un autre code que j'ai ajouté pour rendre la page uniquement pour les utilisateurs connectés:

if ( ! is_user_logged_in() ) { // Display WordPress login form:
    wp_login_form($args);

Ce code fait apparaître la connexion, mais lorsque je me connecte, il ne se souvient pas qu'il est connecté et les fonctions (messages de blog) ne s'afficheront pas. Ce qui est amusant, c'est que le formulaire de connexion (appelé par wp_login_form) s'affiche, mais je ne peux pas me connecter. C'est assez inquiétant, car les informations contenues dans le codex ne fonctionnent pas Intégration de Wordpress dans votre site Web

Ça ne marche pas. Est-ce que quelqu'un peut m'aider? J'ai essayé de poster sur le forum WordPress, mais aucune aide là-bas

Nouvelle édition du 7 novembre: Voici à quoi ressemble le fichier PHP. Cela s'appelle lite_index.php et inclut le wp-load, et à cause de cela, je crois que le formulaire de connexion sous ici montre, mais il ne peut toujours pas se connecter.

<?php
//define('WP_USE_THEMES', false);
//require('lite/wp-blog-header.php');
define('COOKIEPATH', '/');
require('lite/wp-load.php');
require('loggin_check.php');
//require(dirname(__FILE__) . 'lite/wp-load.php');
//header('Content-Type: text/html; charset=ISO-8859-1');

$posts = get_posts('numberposts=10&order=ASC&orderby=post_title');
foreach ($posts as $post) : setup_postdata( $post ); ?>
<?php the_date(); echo "<br />"; ?>
<?php the_title(); ?>    
<?php the_excerpt(); ?> 
<?php
endforeach;
?>
<h1>Lite v4</h1>

<?php
if ( ! is_user_logged_in() ) { // Display WordPress login form:
    wp_login_form($args);
} else {
    wp_loginout(index.php); // Display "Log Out" link.
    echo " | ";
    wp_register('', ''); // Display "Site Admin" link.
    echo "<br />\n";
}
?>
1

J'ai commencé à écrire un long commentaire, mais je me suis dit que je l'écrirais plutôt comme une solution.

Si vous mélangez tous vos fichiers dans un seul fouillis, cela ne fonctionnera probablement pas. Mais si vous mettiez WordPress dans un sous-répertoire, cela fonctionnerait (c'est comme ça que je le faisais auparavant).

RAPPELLES TOI!!! Si vous avez déjà une installation WordPress opérationnelle et que vous souhaitez déplacer les publications, vous ne pouvez pas simplement déplacer les fichiers. Vous devez suivre la bonne procédure, qui est expliquée ici .

Exemple de structure de fichier correcte, mélangeant un site Web statique avec WordPress:

|-your-index.php
|-your-page-1.php
|-your-page-2.php
|-your-css
|  |-your-styles.css
|
|-your-js 
|  |-your-js-file.js
|
|-wp     <-- Put your entire WP-installation in a folder
   |-wp-content
   |      |-themes
   |      |-uploads
   |      |-...
   |      |-...
   |      
   |-wp-includes
   |      |-...
   |      |-...
   |
   |-wp-admin
   |      |-...
   |      |-...
   |
   |-wp-config.php
   |-wp-blog-header.php
   |-...
   |-...

De cette façon, vous pouvez appeler

<?php require( $_SERVER['document_root'] . '/wp/wp-blog-header.php'); ?>

Ensuite, vous pouvez conserver vos propres fichiers statiques et votre installation de WordPress séparément et le faire fonctionner. C'est comme ça que je le faisais, et ça a fonctionné.


côté opposé

Je peux voir (par googling un peu), que cela ressemble à cela @ La suggestion de Bob est devenue plus populaire. Voici un exemple, en utilisant wp-load . Je dois admettre que je ne sais pas quelle est la différence entre les deux.

Cette solution suggère une troisième façon de procéder.

Mais toutes choses considérées ... Peu importe la façon dont vous chargez WordPress, alors je pense que c'est votre structure de fichier qui constitue votre défi actuel (si je ne me trompe pas). WordPress a besoin de son propre environnement isolé (dossier) pour pouvoir créer son URL et appeler les fichiers comme prévu.


Mot final

Mais comme je l'ai suggéré dans mon commentaire. J'avais l'habitude de faire cela - et j'aimerais ne jamais le faire. J'aurais aimé avoir cuit mon site statique dans un thème WordPress.

1
Zeth

Avez-vous essayé d'utiliser ce qui suit?

require(dirname(__FILE__) . '/wp-load.php');

Notez que WordPress doit être installé dans le répertoire racine du site Web.

1
Bob