• 解決済 mogetan

    (@mogetan)


    お世話になります。

    カスタム投稿を作り、その一覧にサイドバーをつけて、サイドバーにある記事のリンクで同じページにある記事の位置に移動するようにアンカーポイントをつけたいのですが可能でしょうか?

    現段階では、カスタム投稿は作成されていて、サイドバーのカスタム投稿された記事のタイトルの取得とそれによる、アンカーポイント記事の位置に移動する方法がわかっておりません。
    カスタム投稿は、
    Advanced Custom Fields と Custom Post Type UI のプラグインで作成しました。
    宜しくお願いいたします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • 可能でしょうか?

    可能だとは思いますが…どこかで何かを設定すればよいというものではないので、PHP か、JavaScript を書く必要があります。

    たぶん、投稿の量が増えるとページングもすることになるでしょうから、どんな投稿が、どんな順番で来ても対応できる仕組みが必要になると思います。そうなると、コピー&ペーストどころではなくて、自分で環境に合わせたコードを書くことになるのではないでしょうか。

    PHP(テンプレート内)でやるなら、

    1. 投稿一覧のループの中で、get_the_title() でタイトルを取得し、マークアップをすると同時に、ユニークな id を振る。
    2. このとき、同時にタイトルと id を配列変数に保存しておく。
    3. メインのループが終わったら、配列変数をループで展開し、上で作った id へのリンクを含んだウィジェットのマークアップをする。

    カスタム投稿タイプの定義で、カスタムフィールドを有効にしてあれば、そこにアンカー用の id を入れておくという手もあります。ウィジェットは各スラッグ毎に変更になるので、やはりテンプレートで生成することになると思いますが。

    あるいは、JavaScript で、

    1. あらかじめウィジェットの雛形だけを作っておき、display: none に設定しておく。
    2. 投稿を出力しているタグの中で、タイトル部分の要素全てに、ユニークな id を追加する。
    3. 同時に、タイトルの text を取得して、id へのリンクを含んだ文字列を作り、ウィジェットの雛形に挿入する。
    4. ウィジェットの display: none を削除する。

    というようなことが思い浮かびます。jQuery を使って、ready イベントをトリガにしてもいいし、使わずに onload イベントで実行してもいいと思いますが、どうしても遅延が生じるので、見た目がいまいちかもしれません。

    あるいは、プラグインにそんな機能がついているのかもしれませんが、使ったことがないので、こちらはノーコメントです。

    トピック投稿者 mogetan

    (@mogetan)

    お返事頂きありがとうございます。
    正直な所、自らPHPを組めるほどのスキルがなく、
    もう少し技術が向上しましたら、教えていただきました
    方法をさせていただこうと思います。
    ご丁寧におしえていただきありがとうございました。
    実現可能ということで、勉強しようとおもいます。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「カスタム投稿にアンカーポイントをつけたい」には新たに返信することはできません。