web-dev-qa-db-ja.com

致命的なエラー:ajaxを使って未定義関数get_post()を呼び出します

私は、aboutという名前のWordPressダッシュボード内に作成されたページ(投稿)から投稿者コンテンツについて取得するaboutリンクを含むindex.phpページを持っています。私は Magnific Popup plupsを使っています。私はこのようなaboutページのコンテンツを含むabout.phpを持っています:

<?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>

そしてindex.php

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

そしてfooter.php

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

リンクをクリックした後、私はこのエラーを得ました:

致命的なエラー:未定義関数get_post()の呼び出し

about.phpの中にインクルードできるファイルはありますか?何が問題ですか?

1
user3003810

問題は、about.phpがWordPressによって認識されていないファイルであり、実際のWordPress関数をロードしないことです。テーマheader.phpファイルの<?php wp_header(); ?>は実際にあなたが使い慣れているほとんどのWordPress機能をロードします。 about.phpファイルでget_header() OR wp_header()のどちらも呼び出していないので、実際にはWordPressの機能にアクセスすることはできません。これに対する一つの解決策はあなたの投稿の上部にこの種のアクセスを与えるコアWordPressファイルを含めることでしょう:

このファイル:require('/wp-blog-header.php');

必要なファイルはwp-config.phpと同じ場所、WordPressのルートにあります - これがあなたが必要とするものをロードすると信じています。

これは 認識されたテンプレートファイルのリストです

しかし何をすべきですか...

wp_ajax 機能にビルドを使用してページを取得して戻す方法を見つけることです。追加のファイルはなく、wp-blog-header.phpを要求する必要もありません。フック/関数は、テーマのfunctions.phpファイルに便利に配置されます。

2
Howdy_McGee