2010-04-19 8 views
0

Je voudrais implémenter une page de récupération de courrier personnalisée dans wordpress. Fondamentalement, j'utilise AJAX pour appeler cette page qui sera passé un ID poste et récupérer certaines données de ce poste.wordpress page personnalisée

Remarque: veuillez ne pas confondre cette question avec un modèle. Je ne veux pas de modèle pour une seule page - je cherche à faire en sorte que cette page interroge plusieurs messages différents en fonction de postID et renvoie certaines données de ce post.

J'ai donc essayé de créer une page

<?php 
$args=array(
     'p'=>'77' 
    ); 
    $friends = new WP_Query($args); 
?> 
<?php if ($friends->have_posts()) : the_post(); ?> 

    <?php the_title(); ?> 
    <?php the_content(); ?> 

<?php else: ?> 
    <p>Sorry, no posts are available.</p> 
<?php endif; ?> 

Mais cela ne fonctionne pas, car il ne se charge pas dans les fonctions de wp pour gérer la requête.

Merci d'avance pour toute aide!

Répondre

1

Vous devez inclure le fichier wp-blog-header.php. Si la page que vous créez dans votre dossier de thème alors vous mettez quelque chose comme ça en haut de votre code

<?php require_once ('../../../wp-blog-header.php');?>

1

Je pense que je suppose que ce que vous essayez de faire, et il semble que vous êtes aller à ce sujet dans le mauvais sens. Ne créez pas de 'nouvelle page' dans l'interface d'administration. Qu'est-ce que vous voulez faire est de servir un fichier (JSON, fragment XHTML, peu importe) à votre Javascript et y inclure des données WP, non? Je connais ce problème, l'ayant utilisé dans certains de mes plugins.

Il existe deux techniques:

(1) Voici ce que vous devez faire: faire un nouveau plugin (juste un fichier lâche php dans les plugins wp avec le même en-tête de format que les autres plugins dans Là). Écrivez votre fonction le long de ces lignes:

function mydatapage(){ 
    if (...$_SERVER['REQUEST_URI'] == the one I am using ...) { 
     $args=array(
      'p'=>'77' 
     ); 
     $friends = new WP_Query($args); 
     if ($friends->have_posts()) : 
      the_post(); 
      the_title(); 
      the_content(); 
     else:>? 
<p>Sorry, no posts are available.</p> 
     <?php endif; 
     die(); 
    } //else do nothing and leave WP to serve the page normally 
} 
//Crucially: 
add_action('init', 'mydatapage'); 

Qu'est-ce que fait est faire une recherche lorsque les pages sont chargées pour voir si l'URL correspond à celui que vous voulez pirater et utiliser pour envoyer vos données personnalisées. Si c'est le cas, vous envoyez les données/fichiers/tout ce que vous ressentez et quittez (die). Donnez un cri si vous voulez une syntaxe plus détaillée. C'est un peu brouillon, mais ça marche bien.

(2) Appelez directement votre fichier plugin. WP ne traitera que les fichiers qui n'existent pas déjà, et laissera le reste à Apache. Cela signifie que vous pouvez créer un fichier plugin et l'appeler directement en utilisant l'URL .../wp-plugin/myfile.php. Vous devez inclure certains des fichiers core WP pour faire fonctionner WP_Query. C'est une méthode marginalement plus fragile.

Questions connexes