フォーラムへの返信

15件の返信を表示中 - 16 - 30件目 (全102件中)
  • フォーラム: 使い方全般
    返信が含まれるトピック: AjaxなWPで表示中の単一記事のIDを元にページ送り
    トピック投稿者 eijiy

    (@eijiy)

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

    いいえ、それでは表示されません。

    single.php

    <div class="nav-below">
    	<span class="nav-previous"><?php previous_post_link('%link', '古い記事へ'); ?></span>
            <span class="nav-next"><?php next_post_link('%link', '新しい記事へ'); ?></span>
    </div><!-- /.nav-below -->

    上記の様になっていますが、クリックされたアンカーリンクに含まれるhash(#記事のID)をjQueryからpage-test.phpに渡して、そこで#contentsの内容を生成してjQueryで表示させているので、自力でページ送りを作成するしかないと思っています。

    間違っていたらご指摘ください。

    宜しくお願い致します。

    フォーラム: 使い方全般
    返信が含まれるトピック: get_termsで表示したリストの上にArrayが表示される
    トピック投稿者 eijiy

    (@eijiy)

    shokun0803さん、つまらない事に時間を取らせて申し訳ありません。

    有難うございました。

    トピック投稿者 eijiy

    (@eijiy)

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

    そうですね、例えば以下の様に連番を振るとか、あるいは「#id」を付けるなどでしょうか。

    <?php
    	$data = $_REQUEST['data'];
    	$catid = get_category_by_slug($data)->term_id;
    	$single_posts = get_posts( "numberposts=-1&category=$catid&order=desc" );
    	$c=0;
    ?>
    <ul>
    	<?php foreach ( $single_posts as $post ) : ?>
    		<?php ++$c; ?>
    		<li><a href="<?php the_permalink() ?><?php echo '#'.$c ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
    	<?php endforeach; ?>
    </ul>

    しかし、肝心な事を忘れていました。
    非同期通信後では、上記の連番がアドレスバーに表示されず意味をなさないと言う事です。

    ページを読み込む直前になんとか出来るのかどうか分りませんが、当分眠れない日々が続きそうです。

    トピック投稿者 eijiy

    (@eijiy)

    修正

    <?php
        $prev = get_previous_post();
        $next = get_next_post();
    ?>
        <div id="nav-above" class="navigation">
    <?php
        if ( $prev ) :
            $prev_cats = (array) wp_get_post_categories( $prev->ID );
    
            if ( in_array( 13, $prev_cats) ) :
    		echo '<div class="nav-previous_cancel">';
    	else :
    		echo '<div class="nav-previous">';
    	endif;
    
            previous_post_link( '%link', '<span class="meta-nav">' . _x( '←', 'Previous post link', 'twentyten' ) . '</span> %title' );
            echo '</div>';
      endif;
    
        if ( $next ) :
            $next_cats = (array) wp_get_post_categories( $next->ID );
    
        	if ( in_array( 13, $next_cats) ) :
    		echo '<div class="nav-next_cancel">';
    	else :
            	echo '<div class="nav-next">';
    	endif;
    
            next_post_link( '%link', '%title <span class="meta-nav">' . _x( '→', 'Next post link', 'twentyten' ) . '</span>' );
           	echo '</div>';
      endif;
    ?>
        </div><!-- end nav-above -->

    トピック投稿者 eijiy

    (@eijiy)

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

    解説書を見ても検索しても分からず諦めようとしていたところで、感謝!感謝!です。
    以下の様にして、ページ送りの部分でクラス分けが出来ました。

    <?php
            $prev = get_previous_post();
            $next = get_next_post();
    
            if ( $prev )
                $prev_cats = (array) wp_get_post_categories( $prev->ID );
            if ( $next )
                $next_cats = (array) wp_get_post_categories( $next->ID );
    
            echo '<div id="nav-above" class="navigation">';
        	if ( in_array( 13, $prev_cats) ) {
    			 echo '<div class="nav-previous">';
    		} else {
    			 echo '<div class="nav-previous_ajax">';
    		}
            previous_post_link( '%link', '<span class="meta-nav">' . _x( '&larr;', 'Previous post link', 'twentyten' ) . '</span> %title' );
    		echo '</div>';
        	if ( in_array( 13, $next_cats) ) {
                echo '<div class="nav-next">';
    		} else {
                echo '<div class="nav-next_ajax">';
    		}
    		next_post_link( '%link', '%title <span class="meta-nav">' . _x( '&rarr;', 'Next post link', 'twentyten' ) . '</span>' );
    		echo '</div></div>';
    ?>

    本来はJavaScriptでSyntaxHighlighterを再起動すべきところなんでしょうが、そちらも初心者でままなりません。

    しかし条件分岐で良い勉強になり有難うございました。

    トピック投稿者 eijiy

    (@eijiy)

    上記を踏まえて調べた結果、get_previous_posts_linkget_next_posts_linkで前と次のページの情報を取得出来る事がわかったので、以下の様にsingle.phpのループ内でテストしてみたんですが、反応はありませんでした。

    <?php
    	$prev = get_previous_posts_link();
    	$next = get_next_posts_link();
    	$prevStr = substr($prev,25,9);
    	$nextStr = substr($next,25,9);
    	if ($prevStr == 'wordpress') {
    		echo $prevStr;
    	} else if ($nextStr == 'wordpress') {
    		echo $nextStr;
    	}
    ?>

    これは取得した情報の中にurl以外も含まれているからだと思うのですが、そうだとすればurlのカテゴリー名の部分だけ取り出すにはどうしたらいいでしょうか。

    どなたかご教授下さい。

    宜しくお願い致します。

    トピック投稿者 eijiy

    (@eijiy)

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

    ご指示どおりにしたところWordPressのタグが使える様になりました。
    jQuery

    jQuery(function(){
    	var url = "http://127.0.0.1:8080/wp/ajaxpost.php";
    	jQuery("#nav-above div a,#nav-below div a").click(function(e){
    		e.preventDefault();
    		jQuery.ajax({
    			type: "GET",
    			url: url,
    			data: {data: this.href},
    			success: function(ajaxpost,status){
    				jQuery("#content").html(ajaxpost);
    			}
    		});
    	});
    });

    ajaxpost.php

    <?php require('./wp-load.php'); ?>
    <?php
        $data = $_REQUEST['data'];
        $str = substr($data,35);
        $post_id = $str;
        $post = get_post($post_id);
        $content = $post->post_content;
        $content = apply_filters('the_content',$content);
        echo $content;
    ?>

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

    トピック投稿者 eijiy

    (@eijiy)

    shokun0803さん、返信ありがとうございます。
    説明不足ですみません、気を付けます。

    具体的には、ページ送りのアンカータグがクリックされたらjQuery(Ajax)からGETでhrefの値(url)をphpに渡して、受け取ったphpで記事を取得して、jQueryで記事を#contentにhtmlで置き換えています。つまりページ送りをAjax化してみたいと言う事です。
    jQuery

    jQuery(function(){
    	var url = "http://127.0.0.1:8080/wp/wp-content/themes/twentyten/ajaxpost.php";
    	jQuery("#nav-above div a,#nav-below div a").click(function(e){
    		e.preventDefault();
    		jQuery.ajax({
    			type: "GET",
    			url: url,
    			data: {data: this.href},
    			success: function(ajaxpost,status){
    				jQuery("#content").html(ajaxpost);
    			}
    		});
            });
    });

    ajaxpost.php(テーマフォルダ内)

    <?php require('./wp-load.php'); ?>
    <?php
        $data = $_REQUEST['data'];
        $str = substr($data,35);
        $post_id = $str;
        $post = get_post($post_id);
        $content = $post->$post_content;
        $content = apply_filters('the_content',$content);
        echo ($content);
    ?>

    しかし以下のエラーが表示されます。
    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\ajaxpost.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\ajaxpost.php on line 1

    なので、どこが悪いのか教えて頂けないでしょうか。

    トピック投稿者 eijiy

    (@eijiy)

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

    お恥ずかしい、しかし修正しても

    <?php require('./wp-load.php'); ?>
    <?php
        $data = $_REQUEST['data'];
        $str = substr($data,35);
        $post_id = $str;
        $post = get_post($post_id);
        $content = $post->$post_content;
        $content = apply_filters('the_content',$content);
        echo ($content);
    ?>

    以下のエラーが表示されます。
    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\ajaxpost.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\ajaxpost.php on line 1

    パスが間違っているんでしょうか。

    フォーラム: プラグイン
    返信が含まれるトピック: Ajax非同期通信でSyntaxHighlighterが機能しない
    トピック投稿者 eijiy

    (@eijiy)

    そうですか。
    今後の目標として勉強します。

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

    フォーラム: プラグイン
    返信が含まれるトピック: Ajax非同期通信でSyntaxHighlighterが機能しない
    トピック投稿者 eijiy

    (@eijiy)

    折角教えて頂いたんですが駄目でした。

    jQuery(function(){
    	jQuery("#nav-above div a,#nav-below div a").live('click',function(e){
    		e.preventDefault();
    		//if ( !jQuery(this).filter('[href*=wordpress]').length ){
    			var link = jQuery(this).attr("href");
    			jQuery("#container").load(link+' #content',function(){
    				SyntaxHighlighter.all();
    			});
    		//}
    	});
    });

    やっぱり難しいです。
    余談ですが、Ajax化されたテーマってないんでしょうか。

    SyntaxHighlighterは外せないので困りました。
    ここで具体的なコードを提示して欲しいとまでは言いませんが、これは何とかなると思われますか?可能性があれば追い続けてみたいと思います。

    フォーラム: プラグイン
    返信が含まれるトピック: Ajax非同期通信でSyntaxHighlighterが機能しない
    トピック投稿者 eijiy

    (@eijiy)

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

    Ajax非同期通信は、コリスで紹介されていた簡単なjQueryのコードを採用しています。

    jQuery(function(){
    	jQuery("#nav-above div a,#nav-below div a").live('click',function(e){
    		e.preventDefault();
    		if ( !jQuery(this).filter('[href*=wordpress]').length ){
    			var link = jQuery(this).attr("href");
    			jQuery("#container").load(link+' #content');
    		}
    	});
    });

    if文は、取り敢えずSyntaxHighlighterを使っている記事があるカテゴリーを除外する為に追加しました。その為そのカテゴリーの記事はページ送りが出来なくなっています。

    それで「SyntaxHighlighter.all();を再度起動する必要がある」と言う事ですが、どうしたらいいのでしょうか。宜しかったらご教授ください。

    フォーラム: 使い方全般
    返信が含まれるトピック: single.phpでis_categoryは使えないのでしょうか。
    トピック投稿者 eijiy

    (@eijiy)

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

    解決しました。
    SyntaxHighlighter Evolvedの件は改めて質問します。

    有難うございました。

    フォーラム: 使い方全般
    返信が含まれるトピック: single.phpでis_categoryは使えないのでしょうか。
    トピック投稿者 eijiy

    (@eijiy)

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

    解決しました。
    SyntaxHighlighter Evolvedの件は改めて質問します。

    有難うございました。

    フォーラム: 使い方全般
    返信が含まれるトピック: PHPで条件分岐して、カテゴリーリストをecho($data)
    トピック投稿者 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から受け取った情報を元に条件分岐してタグを使うと言った具合です。

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

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

15件の返信を表示中 - 16 - 30件目 (全102件中)