フォーラムへの返信

15件の返信を表示中 - 31 - 45件目 (全102件中)
  • フォーラム: 使い方全般
    返信が含まれるトピック: PHPで条件分岐して、カテゴリーリストをecho($data)
    トピック投稿者 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

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

    宜しくお願い致します。

    フォーラム: 使い方全般
    返信が含まれるトピック: PHPで条件分岐して、カテゴリーリストをecho($data)
    トピック投稿者 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を一旦フェードアウトして、フェードイン

    フォーラム: 使い方全般
    返信が含まれるトピック: PHPで条件分岐して、カテゴリーリストをecho($data)
    トピック投稿者 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

    カテゴリーリストのタグは現在使っているものをそのまま使っているので間違ってないと思うのですが、エラー行はカテゴリーリストのタグのところです。

    トピック投稿者 eijiy

    (@eijiy)

    show555さん、返信ありがとうございます。

    勉強不足(反省!)です。
    setup_postdata($post);を使うんですね。

    お陰でテストも成功して、実現できそうです。

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

    トピック投稿者 eijiy

    (@eijiy)

    kvexさん、返信ありがとうございます。

    そうです、そのコードで駄目です。

    <?php the_excerpt(); ?>
    はループ外では使えないのでしょうか。

    以下のコードをヘッダーに入れると

    <br />
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?></p>
    <div class="post">
    <a href="<?php the_permalink(); ?>" rel="bookmark"><br />
    ■<?php the_title(); ?></a>-<br />
    <?php the_date(); ?>-<?php the_time(); ?><br />
    <?php the_category(); ?><br />
    <?php the_excerpt(); ?>
    </div>
    <p><?php endwhile; else : ?><br />
    <?php _e('sorry,no posts'); ?><br />
    <?php endif; ?>

    現在表示中のタイトル、リンク、投稿日時、カテゴリ、内容の抜粋が表示されます。

    これを現在表示中の記事と関係なく、トップページを開いた時のみヘッダーに最新の投稿の一件を表示させるように変えられないものでしょうか。

    フォーラム: プラグイン
    返信が含まれるトピック: wibiya toolbar がIEで表示されません。
    トピック投稿者 eijiy

    (@eijiy)

    takuyaさん、返信ありがとうございます。

    確認しようと努力はしてみましたが、私のレベルでは難しくて分りませんでした。

    とりあえず関連のプラグインとjQueryを外してみましたが変化はありません。

    次、自作テーマを作る時に確認しながらやってみます。

    twentytenを使いながら勉強していきますので、今回はこれで解決とさせてください。

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

    トピック投稿者 eijiy

    (@eijiy)

    自己解決です。

    WordPressの場合は以下の様にするんですね。

    <?php wp_enqueue_script('all', get_bloginfo('template_url') . '/js/jQuery.all.js', array('jquery')); ?>
    <?php wp_head(); ?>

    たった1行で複数のjQueryが利用でき、読み込み速度も体感で約2倍になった感じです。

    トピック投稿者 eijiy

    (@eijiy)

    本番サイトではwp_headの下でjQueryを読み込まないといけない様で、とりあえずは解決しましたが、上記の方法のどこがいけないのか分りません。

    どなたかご存知の方がおられましたらご教授頂けないでしょうか。

    宜しくお願い致します。

    トピック投稿者 eijiy

    (@eijiy)

    mizubeさん、wp_reset_query()を追加する事で思い通りになりました。

    <?php
    if ( is_single() ) : wp_reset_query();
        $categories = get_the_category( $post->ID );
        // カテゴリー ID 順に並べ替える場合は下の行をアンコメント
        // if ( !empty( $categories ) ) usort( $categories, '_usort_terms_by_ID' );
        foreach ( $categories as $cnt => $cat ) :
    ?>
    	<div id="toggler-<?php echo $cnt+1; ?>" class="opened" title="<?php echo esc_attr( $cat->cat_name ); ?> の投稿一覧">
    		<div>
    			<ul>
    <?php
    //子孫が要る時
    //remove_filter( 'pre_option_category_children', 'my_category_children' );
    //子孫が要らない時
    add_filter( 'pre_option_category_children', 'my_category_children' );
    //
    $single_posts = get_posts( "numberposts=-1&category=$cat->cat_ID&order=asc" ); //$cat->term_idでもいい
            foreach ( $single_posts as $post ) :
    ?>
    				<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
    <?php
            endforeach; // single_posts
    ?>
    			</ul>
    		</div>
    	</div>
    <?php
        endforeach; // categories
    endif; // is_single
    ?>

    ちょっと追加してますが、お陰で完成しました。
    ありがとうございました。

    また機会があれば宜しくお願い致します。

    トピック投稿者 eijiy

    (@eijiy)

    mizubeさんのコードで試した結果、どのカテゴリーに属する記事であっても親A,B,C,Dカテゴリーの内、子カテゴリーを持たないカテゴリーDの名前と投稿一覧がされました。

    トピック投稿者 eijiy

    (@eijiy)

    以下のコードAとコードBを試している最中、不思議な事に両方とも記述するとコードBが思い通りに動き、コードAを外すとコードBが思い通りに動きません。

    コードA

    <?php
    if ( is_single() ) :
        $categories = get_the_category( $post->ID );
        // カテゴリー ID 順に並べ替える場合は下の行をアンコメント
        // if ( !empty( $categories ) ) usort( $categories, '_usort_terms_by_ID' );
        foreach ( $categories as $cnt => $cat ) :
    ?>
    	<div id="toggler-<?php echo $cnt+1; ?>" class="closed" title="<?php echo esc_attr( $cat->name ); ?> の投稿一覧">
    		<div>
    			<ul>
    <?php
            $single_posts = get_posts( "numberposts=-1&category=$cat->term_ID&order=asc" );
            foreach ( $single_posts as $post ) :
    ?>
    				<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
    <?php
            endforeach; // single_posts
    ?>
    			</ul>
    		</div>
    	</div>
    <?php
        endforeach; // categories
    endif; // is_single
    ?>

    コードB

    <?php if (is_single()) : ?>
    <ul>
    <?php
    $cat = get_the_category(); $cat = $cat[0];
    //子孫が要る時
    remove_filter( 'pre_option_category_children', 'my_category_children' );
    //子孫が要らない時
    //add_filter( 'pre_option_category_children', 'my_category_children' );
    //
    $myposts = get_posts('category='. $cat->cat_ID);
    //$myposts = get_posts('category='. $cat->category_parent);
    foreach($myposts as $post) :
    ?>
    <li><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
    <?php endforeach; ?>
    </ul>
    <?php endif; ?>

    ここで言う思い通りの動きとは、単一記事表示中は同一カテゴリーの投稿一覧をサイドバーに表示させたいという事ですが、どうしてコードAを外すとコードBが機能しなくなるのでしょうか。

    どなたかご教授頂けないでしょうか。

    尚、コードBの子孫が要る時と要らない時は、自作テーマのfunctions.phpに以下のコードを記述(フォーラムから引用)しています。

    function my_category_children( $return ) {
      return array();
    }
    add_filter( 'pre_option_category_children', 'my_category_children' );

    宜しくお願い致します。

    トピック投稿者 eijiy

    (@eijiy)

    mizubeさん、返信ありがとうございます。

    紹介していただいたコードでも同じように、全ての投稿一覧が表示されてしまいます。
    カテゴリー名は表示されるようになりましたが、どのカテゴリーに属する記事であっても親カテゴリーABCDの内Dしか表示されません。尚、Dのみ子カテゴリーがありません。

    解説サイトで、get_the_categoryではIDが正しく取得できないことがあるとか書いてありましたが、どうなんでしょうか。

    トピック投稿者 eijiy

    (@eijiy)

    kvexさん、返信ありがとうございます。

    そうですね、例えば親Aの子1のカテゴリーに属する記事が表示されている時は親Aの子1の投稿一覧、親Bの子2のカテゴリーに属する記事が表示されている時は親Bの子2の投稿一覧、という具合にサイドバーに表示させたいと思っています。

    トピック投稿者 eijiy

    (@eijiy)

    上記のコードを訂正します。

    <?php if (is_category() || is_single()) : ?>
                        <?php
                            if (is_category()) {
                                $cat = get_query_var('cat');
                                $catname = get_the_category_by_ID($cat);
                            } else {
                                $cat = get_the_category();
                                $cat = $cat[0];
                                $cat = $cat->cat_ID;
                                $catname = $cat->cat_name;
                            }
                            echo '<dt>' . $catname . 'の投稿一覧</dt>';
                            $category_posts = get_posts("order=asc&category=$cat&numberposts=-1");
                        ?>
                        <dd>
                            <ul>
                                <?php foreach($category_posts as $post): ?>
                                     <li class="myEllipsis"><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
                                <?php endforeach; ?>
                             </ul>
                         </dd>
                    <?php endif; ?>

    これで選択されたカテゴリーや記事を開いた時に、そのカテゴリーの投稿一覧がサイドバーに表示される様になりました。

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

    トピック投稿者 eijiy

    (@eijiy)

    mizubeさん、返信ありがとうございます。

    説明不足でした。

    選択したカテゴリーのタイトルと其れに含まれる全て(子も孫も)の投稿一覧をサイドバーに表示させたかったんです。

    それで提示されたコードで以下の様にして、選択したカテゴリーのタイトルとその投稿一覧をサイドバーに表示させることが出来ました。

    <?php if (is_category() || is_single()) : ?>
         <?php
             $cat = get_query_var('cat');
        	 $catname = get_the_category_by_ID($cat);
    	 echo '<dt>' . $catname . 'の投稿一覧</dt>';
             $category_posts = get_posts("order=asc&category=$cat&numberposts=-1");
         ?>
         <dd>
             <ul>
                 <?php foreach($category_posts as $post): ?>
                     <li class="myEllipsis"><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
                 <?php endforeach; ?>
             </ul>
         </dd>
    <?php endif; ?>

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

    もし間違っているところや修正すべき点があればご指摘ください。

15件の返信を表示中 - 31 - 45件目 (全102件中)