サポート » 使い方全般 » PHPで条件分岐して、カテゴリーリストをecho($data)

  • 解決済 eijiy

    (@eijiy)


    jQueryから受け取った値をPHPで条件分岐して、データ($data)を取得して、echo($data)してサイドバーに表示させたいのですが、以下の様にして日時は表示されますがカテゴリーのリストが表示されません。

    <?php
        //load第2引数のデータを受け取ります
        $type = $_POST['type'];
        //typeが"time"なら時間を返します
        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);
    ?>

    書き方の問題なのか、この様な事は出来ないのか、出来るとすればカテゴリーのリストを$dataに代入してechoするにはどうしたらいいのでしょうか。

    宜しくお願い致します。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • jQueryから受け取った値をPHPで

    んんん?jqueryはブラウザで処理されますよね?phpはサーバーで処理されます。相容れないものだと思いますが?それともAjaxなどで非同期通信でもしていますか?

    上記ソースコードにjqueryの記述はないように思いますけど?普通にphpで時間を取得してますよね?postした値で振り分けているだけならwp_list_categoriesの記述ミスなだけな気も・・・
    私なんか勘違いしてるかな?(汗)

    トピック投稿者 eijiy

    (@eijiy)

    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などで読み込む方法などでも動きませんかね?

    すみませんね、検証している時間がなくて・・・(汗)

    トピック投稿者 eijiy

    (@eijiy)

    例えば、以下の様にして

    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

    など、ワードプレス関数が使えるようになる呪文を使う必要があります。

    トピック投稿者 eijiy

    (@eijiy)

    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

    ご指導頂けないでしょうか。

    宜しくお願い致します。

    トピック投稿者 eijiy

    (@eijiy)

    ご指導いただいた、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から受け取った情報を元に条件分岐してタグを使うと言った具合です。

    皆さんのご協力に報いる事が出来ませんでしたが、これで解決とさせて頂きます。

    ありがとうございました。

    ごめんなさい
    気がつきませんでした

    でも、自力解決できてよかったですね

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「PHPで条件分岐して、カテゴリーリストをecho($data)」には新たに返信することはできません。