2017-03-05 10 views
1

IVEは、機能ファイルのco authorsサイトから利用可能なposted_on関数を追加しました。定期的な著者と共同著者が単一のページに表示されますが、著者のアーカイブページで作業するようには思えません。共同制作者のリンクをクリックすると、共同制作者の正しいURLに移動しますが、表示されるコンテンツは通常の制作者向けです。私は共著者のgithubの問題を見てきましたが、私の小枝に共著者を実装する方法を本当に混乱させました。Timber、Twig:著者のアーカイブページに表示する著者を取得する

私は$コンテキストに必要なものがあると確信していますが、本当にそこに何を追加するのかはわかりません。

single.php

<span class="author"><a href="{{post.author.link}}" rel="author"> 
    {{function('name_posted_on')}}</a> 
    </span> 

私は私のauthor.twigファイルでauthor.phpファイル

$context = Timber::get_context(); 
$args = 'post_type=post&numberposts=2'; 
$context['posts'] = Timber::get_posts($args); 

Timber::render(array('author.twig'), $context); 

を持っている:

<div class="col-md-12"> 

    //I need the author or co author to be displayed in the h3 and their posts in the loop 

    <h3>Latest From {{posts.author.first_name}} {{posts.author.last_name}}</h3> 
</div> 
{% for post in posts %} 

    <article class="latest-article-widget col-md-6"> 
     {% block author %} 


      {% if post.get_thumbnail %} 
       <img src="{{post.thumbnail.src}}" class="img-responsive" /> 
      {% endif %} 

      <div class="author"> 
       <span>By:</span> 
       <a href="" rel="author">{{post.author.first_name}} {{post.author.last_name}}</a> 
      </div> 
      <h1><a href="{{post.link}}">{{post.title}}</a></h1> 
      {% for item in post.get_field('post_or_page_content') %} 
      <p>{{item.standard_text_content|excerpt(25)}} <a href="{{post.link}}"></a></p> 

      {% endfor %} 
     {% endblock %} 
    </article> 
{% endfor %} 

答えて

0

それは常に容易に可能で統合することはありません多くのプラグインはThe Loopに依存しているため、TimberとTwigにはプラグインが含まれていますオブジェクトを閉じます。

多くの場合、現在の投稿のIDを手動で関数に渡す必要があります。そのためには、関数がIDをパラメータとして渡す可能性が必要です。共同作者のプラグインを使うと、あなたは運がいいです。 get_coauthorsの機能があり、投稿の共同編集者を含むすべての著者を返すための投稿IDを受け取ります。この関数は文書化されていないかもしれませんが、プラグインによって内部的に使用されています。

のは、あなたがこの作品を作ることができる方法についてのステップバイステップで、その上に行こう:

author.php

<?php 

$context = Timber::get_context(); 

$context['author'] = new \Timber\User(get_queried_object()); 
$context['posts'] = Timber::get_posts(); 

Timber::render(array('author.twig'), $context); 

木材は、著者の機能を持っていますが、authorプロパティは、ポストの上に設定されていますアーカイブページではなく、オブジェクトです。 get_queried_object()関数を使用すると、著者のアーカイブページの現在の投稿にWP_Userというオブジェクトが返されます。テンプレート内でより簡単で多用途に使用できるように、オブジェクトをTimber\Userオブジェクトに変換します。

投稿の場合、引数なしでデフォルトの投稿を検索します。この方法で、Timberはアーカイブページのデフォルトを使用します。あなたは、引数を渡すときに、あなたのような著者の記事を取得するために設定されたクエリの引数を無視して、ちょうどあなたが設定した2つの引数のためのクエリを実行します

$context['posts'] = Timber::get_posts('post_type=post&numberposts=2'); 

その後、木材で行います。共同著者のプラグインがデフォルトのクエリにフックするため、自分の投稿がなくても他の投稿の共著者のアーカイブにアクセスすると、その著者のアーカイブには投稿が表示されません。

既存の引数を使用して、独自のパラメータで上書きして後でTimber::get_posts()に使用する場合は、wp_parse_argsを使用できます。最初のパラメータとして新しい引数を渡し、上書きするデフォルトのパラメータとしてメインクエリのクエリ変数を渡します。

<?php 

global $wp_query; 

// Set query args before posts are queried in get_context() 
$args = wp_parse_args(array(
    'posts_per_page' => 2, 
), $wp_query->query_vars); 

$context = Timber::get_context(); 

$context['author'] = new \Timber\User(get_queried_object()); 
$context['posts'] = Timber::get_posts($args); 

Timber::render(array('author.twig'), $context); 

作者。今get_coauthorsが戦場に出た

<div class="col-md-12"> 
    <h3>Latest From {{ author.first_name }} {{ author.last_name }}</h3> 
</div> 

{% for post in posts %} 
    <article class="latest-article-widget col-md-6"> 
     {% block author %} 
      {% if post.get_thumbnail %} 
       <img src="{{ post.thumbnail.src }}" class="img-responsive" /> 
      {% endif %} 

      <div class="author"> 
       <span>By:</span> 
       {% set authors = fn('get_coauthors', post.id) %} 

       {% for author in authors %} 
        {% set author = TimberUser(author) %} 

        <a href="{{ author.link }}" rel="author"> 
         {{ author.first_name }} {{ author.last_name }} 
        </a>{% if not loop.last %}, {% endif %} 
       {% endfor %} 
      </div> 

      <h1><a href="{{ post.link }}">{{ post.title }}</a></h1> 
      {% for item in post.get_field('post_or_page_content') %} 
       <p>{{ item.standard_text_content|excerpt(25) }} <a href="{{  post.link }}"></a></p> 
      {% endfor %} 
     {% endblock %} 
    </article> 
{% endfor %} 

小枝。各ポストのためのためのループ内では、我々は小枝で正常に利用できない機能を呼び出すために使用することができます

{% set authors = fn('get_coauthors', post.id) %} 

fn速記(またはfunction())を使用することができます。現在の投稿の投稿IDを渡して、その投稿のすべての作者(デフォルトの作者+共同編集者)を取得します。これらの著者オーバー

その後、我々ループ:

{% for author in authors %} 
    {% set author = TimberUser(author) %} 

    <a href="{{ author.link }}" rel="author"> 
     {{ author.first_name }} {{ author.last_name }} 
    </a>{% if not loop.last %}, {% endif %} 
{% endfor %} 

各著者のリンクを取得することができるように、我々はTimber\Userオブジェクトにそれぞれ1を変換します。

私はこれがあなたが必要としていることを望みます。アクセシビリティの

について

小型ノートでは、私はあなたのポストのタイトルのために<h1>を使用することがわかりました。ドキュメントアウトラインを実装しようとしている可能性があります。これを行う方法を示すブログポストがたくさんありますが、Document Outline is not implemented in any browser yet。それを使用することで、(スクリーンリーダーのような)補助技術を持つユーザーがあなたのページを読むのが難しくなります。

+0

Ah yeh。私は別の開発者からこのプロジェクトを継承しました。記事要素内のヘッダー要素を使用し、見出しタグを追加する必要があると考えています。私はそれを理解する。セクション>ヘッダ> h1のようなもの – lnickel

+0

@lnickelそれは問題ではありません。ヘッダー内にH1をネストすることも、ドキュメントモデルの一部です。その解決策は、文書モデルに従ってコード化しないことです。これは、基本的には、以前にやったように行うべきだということを意味します。見出しの面では、ページごとに1つのH1のみを使用し、見出しレベルをスキップして見出しを入れないようにして、見出しだけを見ればページ構造にします(支援技術のように)。 – Gchtr

+0

ブエノ!解明してくれてありがとう! – lnickel

関連する問題