web-dev-qa-db-fra.com

Erreur fatale: appel de la fonction non définie get_post () avec ajax

J'ai une page index.php avec un lien sur about, qui obtiendra sur le contenu de l'auteur de la page créée (post) à l'intérieur du tableau de bord WordPress avec le nom à propos. J'utilise Magnific Popup plugin pour les groupes. J'ai about.php qui comprend le contenu de la page à propos de ce genre:

<?php 
  $pageid = 2; // 2 is the id of about page/post
  $about = get_post($pageid);
?>

<div id="custom-content" class="white-popup-block" style="max-width:600px; margin: 20px auto;">

    <h3><?php echo $about->post_title; ?></h3>
    <style>
    #custom-content img {max-width: 100%;margin-bottom: 10px;}
    </style>
    <div class="image-container pull-left">
        <img src="<?php echo get_field( "image", $pageid ); ?>">
    </div>
    <h4><?php echo get_field( "brief", $pageid ); ?></h4>
    <p>
    <?php echo get_field( "brief_lines", $pageid ); ?>
    </p>
    <div class="about-content">
        <?php echo $about->post_content; ?>
    </div>
</div>

et en index.php

<a href="<?php echo get_template_directory_uri(); ?>/about.php" class="morelink pull-left text-ajax-popup">read more</a>

et dans le footer.php

$('.text-ajax-popup').magnificPopup({
  type: 'ajax',
  alignTop: true,
  overflowY: 'scroll' 
});

Après avoir cliqué sur le lien, j'ai eu cette erreur:

Erreur fatale: appel de la fonction non définie get_post ()

Existe-t-il des fichiers que je pourrais inclure dans about.php? Quel est le problème?

1
user3003810

Le problème est que about.php n'est pas un fichier reconnu par WordPress et ne chargera aucune des fonctions réelles de WordPress. <?php wp_header(); ?> dans votre fichier themes header.php charge en réalité la plupart des fonctionnalités de WordPress que vous avez l'habitude d'utiliser. Puisque vous n’appelez pas non plus get_header() OR wp_header() dans votre fichier about.php, vous n’avez en fait accès à aucune des fonctionnalités de WordPress. Une solution à ce problème consiste à inclure un fichier WordPress principal en haut de votre message, qui vous donnera ce type d'accès:

Ce fichier: require('/wp-blog-header.php');

Le fichier requis se trouve à la racine de WordPress, au même endroit que wp-config.php - Je pense que cela chargera ce dont vous avez besoin.

Voici une liste de Fichiers de modèles reconnus .

Ce qui devrait faire si ...

Est-ce que trouver un moyen d'utiliser la fonctionnalité wp_ajax pour obtenir votre page et la ramener. Ensuite, il n'y a pas de fichier supplémentaire, pas besoin d'exiger wp-blog-header.php et son crochet/fonction serait situé dans votre fichier themes functions.php

2
Howdy_McGee