フォーラムへの返信

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック投稿者 john.book

    (@johnbook)

    ありがとうございます!
    思ってたようになりました。

    get_comment_linkを検索してみましたが、英語の情報しかないのであまりよく調べられませんでしたがウィジェットでのコメントへのリンク以外に使われてるんでしょうか。
    このコードで恐らくサイトから全ての#comment-1234などのハッシュタグが取り除かれると思うのでもし他に影響があった場合、報告したいと思います。

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

    トピック投稿者 john.book

    (@johnbook)

    リサーチ不足でした。解決致しました。
    一応もしも同じつまづきをする方がいた場合参考になるようコードだけ貼っておこうと思います。

    single.php内で普段基本で使っているループより外(上)に

    <?php if(!is_single('先頭固定している投稿のID')): ?>
    <?php $sticky = get_option( 'sticky_posts' ); query_posts( 'p=' . $sticky[0] ); ?>
    <?php if(have_posts()): while(have_posts()): the_post(); ?>
    <div id="post-<?php the_ID(); ?>" <?php post_class('sticky'); ?>>
    <h2 class="posttitle"><?php the_title(); ?></h2>
    <p class="postdate">Posted on <?php the_time('Y年n月j日(D) H:i'); ?></p>
    <?php the_post_thumbnail(); ?>
    <?php the_content(); ?>
    </div>
    <?php endwhile; endif; ?>
    <?php wp_reset_query(); ?>
    <?php endif; ?>

    ↑これで出来ることは

    • 先頭に固定している”投稿記事”を、どの投稿ページでも先頭に表示させる。
    • その固定している”投稿記事”のsingleページを開いた場合は二重表示しない。
    • 固定しているページのタイトルからは<a>タグを抜いている。

    次に、index.phpか、loop.php(テンプレートによって違う)の投稿ループの後
    私のテンプレートで言うと

    <?php if(have_posts()): while(have_posts()): the_post(); ?>
    <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

    の後に

    <?php if(is_sticky()):?>
    <h2 class="posttitle"><?php the_title(); ?></h2>
    <p class="postdate">Posted on <?php the_time('Y年n月j日(D) H:i'); ?></p>
    <?php else: ?>
    
    <!-- ここから -->
    <h2 class="posttitle"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
    <p class="postdate">Posted on <?php the_time('Y年n月j日(D) H:i'); ?></p>
    <!-- ここまではデフォルトであるコード -->
    
    <?php endif; ?>

    というif文で括ってやると<a>タグが消せる。
    タグ以外にも変更が出来るので応用が効きそうです。
    とても初歩的ですがハマったので…。

    トピック投稿者 john.book

    (@johnbook)

    ありがとうございました。難しいですが頑張ってみます。

    トピック投稿者 john.book

    (@johnbook)

    あ、ちゃんと

    function test_append($content){
    echo '<script type="text/javascript">
    //<![CDATA[
    $(function(){$("<div class=\'myclass\'>テスト追記</div>").appendTo("div#test");
    });
    //]]>
    </script>';
    return $content;
    }

    とクラスを追加しててもテスト成功してます。

    トピック投稿者 john.book

    (@johnbook)

    連投すみません。
    ↑で教えてもらった記述方法なのですが

    function test_append( $content ) {
      return $content
      . '<script type="text/javascript">'
      . '//<![CDATA['
      . '$(function(){$(' //←エラーが出たのでこのシングルクォーテーションはたぶん抜けてただけかと思い自分で足しました。
      . '"<div class=\'myclass\'>テスト追記</div>").appendTo("div#test");'
      . '});'
      . '//]]>'
      . '</script>';
    }

    これだとテスト追記が出ませんでした。

    ↑でテストしたっていう

    function test_append($content){
    echo '<script type="text/javascript">
    //<![CDATA[
    $(function(){$("<div>テスト追記</div>").appendTo("div#test");
    });
    //]]>
    </script>';
    return $content;
    }

    これなら出てくるんですが…どういう違いがあるんでしょう?

    トピック投稿者 john.book

    (@johnbook)

    ご返信ありがとうございます!
    すごく参考になります!
    なるほど先にreturn $contentでいいのですね。

    とても初歩的な質問なのですが、

    . ‘<script type=”text/javascript”>’

    この記述はどういうことなのでしょうか?
    シングルクォーテーションでjQueryの記述をくくることで<?php~?>タグ内で通るようにしていることは分かるのですが、初めのピリオドはどういう役割があるのでしょう?

    また、本来やりたかった次のステップがそのappendToで追記する文字列の中にWPの関数
    例えばcomment_text()関数を使ってコンテンツを挿入したいのですが…
    例があまりないのですが色々調べているとそれは出来ないのでしょうか。。?
    ajaxがどうとかっていうところまでは調べましたが、ajaxはまだ学んでません。
    例えばこれは動きませんが、

    function test_append( $content ) {
      return $content
      . '<script type="text/javascript">'
      . '//<![CDATA['
      . '$(function(){$(
      . '"<ul class=\'myclass\'><?php comment_text(); ?></ul>").appendTo("div#test");'
      . '});'
      . '//]]>'
      . '</script>';
    }

    イメージとしてはこんなことがしたいです。
    ちなみにsingle.phpへ、javaを使わずに単純に

    <?php if ( $comments = get_approved_comments( $post->ID ) ) : ?> <!-現在表示している記事のコメント取得->
    <?php foreach($comments as $comment): ?> <!-コメント取得ループ->
    <ul><?php comment_text(); ?></ul>
    <?php endforeach; ?>
    <?php endif; ?>

    これでコメント内容をピックアップすることは出来たのですが
    この内容を、好きな場所に挿入したいというのが最終的な目標です。
    初心者なのに難しいことをしようとしているかもしれません。。
    宜しければ何かアドバイスお願い致します。

    トピック投稿者 john.book

    (@johnbook)

    少しいじっていると、簡単なテストには成功しました。

    function.phpへ

    function test_append($content){
    echo '<script type="text/javascript">
    //<![CDATA[
    $(function(){$("<div>テスト追記</div>").appendTo("div#test");
    });
    //]]>
    </script>';
    return $content;
    }
    add_filter('the_content', 'test_append');

    これを追加し、loop-single.php(twenty tenテーマでテストしています)へ
    <?php the_content(); ?>
    の直前に
    <?php apply_filters('test_append', $content); ?>
    を追加しましたところ、無事<div id=”test”>テスト本文</div>の後に
    <div>テスト追記</div>が出ました。

    しかし、この追記分のdivへclassやidをつけると出てこなくなります。
    .appendToなどで追記するタグへ<div class=”testtag”>テスト追記</div>とすることは不可能なのでしょうか?

    どなたか、ご教授宜しく御願いします。

7件の返信を表示中 - 1 - 7件目 (全7件中)