jQueryから受け取った値をPHPで
んんん?jqueryはブラウザで処理されますよね?phpはサーバーで処理されます。相容れないものだと思いますが?それともAjaxなどで非同期通信でもしていますか?
上記ソースコードにjqueryの記述はないように思いますけど?普通にphpで時間を取得してますよね?postした値で振り分けているだけならwp_list_categoriesの記述ミスなだけな気も・・・
私なんか勘違いしてるかな?(汗)
shokun0803さん、返信ありがとうございます。
説明不足ですね、Ajaxで非同期通信です。
以下にテスト中のコードを示します。
html
<div id="btn">
<button id="cate">Category</button>
<button id="date">Date</button>
</div>
<div id="sidepanel"></div>
jQuery
jQuery(function(){
jQuery("button","#btn").click(function(){
jQuery("#sidepanel").load("/wp/wp-content/themes/twentyten/test.php",
{ type: this.id },
function(){
jQuery(this)
.fadeOut(100)
.fadeIn(1000);
});
});
});
php
<?php
//load第2引数のデータを受け取ります
$type = $_POST['type'];
//typeが"cate"ならカテゴリーリストを返します
if ($type=="cate") {
$data = wp_list_categories('title_li=&depth=2&hierarchical=true&show_post_count=true&use_desc_for_title=0');
} else {
$data = date("Y/m/d H:i:s");
}
echo($data);
?>
これを実行するとCategoryボタンをクリックした時に以下のエラーが表示されます。
Fatal error: Call to undefined function wp_list_categories() in C:\xampp\htdocs2\wp\wp-content\themes\twentyten\test.php on line 6
カテゴリーリストのタグは現在使っているものをそのまま使っているので間違ってないと思うのですが、エラー行はカテゴリーリストのタグのところです。
test.phpはWordPressのテンプレとして動作していますか?まさかとは思いますが上記コードだけを記述した独自phpファイルではないですよね?もちろんテーマフォルダに入れただけではWordPressの一部として動くわけではないですし・・・
該当プログラムの部分をfunctions.phpに関数化して入れるかして、関数をindex.phpなどで読み込む方法などでも動きませんかね?
すみませんね、検証している時間がなくて・・・(汗)
例えば、以下の様にして
function test(){
//load第2引数のデータを受け取ります
$type = $_POST['type'];
//typeが"cate"ならカテゴリーリストを返します
if ($type=="cate") {
$data = wp_list_categories('title_li=&depth=2&hierarchical=true&show_post_count=true&use_desc_for_title=0');
} else {
$data = date("Y/m/d H:i:s");
}
echo($data);
}
get_test()
と言う事ですか?、何分phpの理解度が低レベルなので間違っていたらご指摘ください。
しかし、このプログラムの流れからするとどうなんでしょうか。
流れ
1.jQueryで、ボタンがクリックされたら#sidepanelにtest.phpをload
2.jQueryで、クリックされたボタンのid名を取得
3.phpで、id名を受け取る
4.phpで、id名によって条件分岐してデータを変数$dataに代入してecho($data)
5.jQueryで、#sidepanelを一旦フェードアウトして、フェードイン
こんにちは、
Fatal error: Call to undefined function wp_list_categories() in C:\xampp\htdocs2\wp\wp-content\themes\twentyten\test.php on line 6
これは、wp_list_categories()なんてしらないよ というメッセージです。
wp_list_categories()は、ワードプレス関数ですから、普通のphpファイルで、いきなり呼んでも、呼べません。
http://ja.forums.wordpress.org/topic/3475?replies=20
など、ワードプレス関数が使えるようになる呪文を使う必要があります。
nobitaさん、返信ありがとうございます。
header.phpやindex.phpは変化なし、それぞれ一行目に<?php require(‘./wp-load.php’); ?>を入れてみました。test.phpに入れたら以下の様なエラーメッセージが表示されて、どこに入れていいのかサッパリ分らずギブアップです。
Warning: require(./wp-load.php) [function.require]: failed to open stream: No such file or directory in C:\xampp\htdocs2\wp\wp-content\themes\twentyten\test.php on line 1
Fatal error: require() [function.require]: Failed opening required ‘./wp-load.php’ (include_path=’.;C:\xampp\php\PEAR’) in C:\xampp\htdocs2\wp\wp-content\themes\twentyten\test.php on line 1
ご指導頂けないでしょうか。
宜しくお願い致します。
ご指導いただいた、test.phpに<?php require(‘./wp-load.php’); ?>を入れる方法では、上記の様にエラーが出て、WordPressのタグが使えなかったので、別の方法を考えました。
それは、test.phpの名前をpage-test.phpとし、新規に空のページを作成して、パーマリンクをtestとする事により、url(“/wp/test”)でpage-test.phpにアクセス出来、WordPressのタグも使えるので、後はpage-test.phpでjqueryから受け取った情報を元に条件分岐してタグを使うと言った具合です。
皆さんのご協力に報いる事が出来ませんでしたが、これで解決とさせて頂きます。
ありがとうございました。