web-dev-qa-db-ja.com

用語アーカイブのURLを取得/リンク

カスタム投稿タイプとカスタム分類法を作成しました。

例:actors(ポストタイプ)の場合はmovies(分類法).

今私は自分のウィジェットにいくつかの用語とmore用語アーカイブのためのactorsリンクを表示したいです。

分類アーカイブのリンク/ urlを取得するにはどうすればよいですか。

4
mrzmyr

get_term_linkを使う

例えばアーカイブにリンクしている俳優用語のリストをプリントアウトするには:

$terms = get_terms('actors');
echo '<ul>';
foreach ($terms as $term) {
    echo '<li><a href="'.get_term_link($term).'">'.$term->name.'</a></li>';
}
echo '</ul>';

しかしながら!

あなたが本当に意味するのがカスタム投稿タイプアーカイブの同等物であるならば、それはそのタイプのすべての投稿をリストしますが、分類学用語のために、例えば。利用可能なさまざまな分類用語を一覧表示したアーカイブとして機能するページであれば、不運です。 WordPressには、用語の分類アーカイブはなく、特定の用語に割り当てられた投稿のみがあります。

分類用語を一覧表示するページを作成するには、上記のようなコードを使用できます。それをページテンプレートに入れて、そのページを分類用語アーカイブとして使用します。

その理由は、問題がポストループにあり、ほとんどすべての単一ページテンプレートがあることを意図していて、テンプレート階層を見れば、必要なテンプレートが見つからなければ、それはすべてindex.phpに戻ることです。 index.phpには、用語ループではなく投稿を表示する投稿ループがあります。これと、さまざまな方法や用語をどのようにリストする必要があるかについてのアイデアは、合意がないことを意味します。日付アーカイブはどうですか?月と年をリストするアーカイブがあるべきですか?タイムライン?パネルタイル雲など

10
Tom J Nowell

精練からこれを得る簡単な方法はありません。そして、至る所で答える人は誰でもあなたはTAXONOMYのTERMにリンクしたいと思っています... TAXONOMYアーカイブへのリンクを得ようとしている間...私は絶対に何も見つけていません。

基本的に、多くの人と同じように、あなたはget_taxonomy_archive_linkメソッドが欲しいです。

何らかの理由でそれを除いて、それは単に存在しません。私はこれをWordpress側の大きな失敗だと思います。

あなたの質問に対する答えはありません。適切な解決策としてWPフレームワーク内で実際に機能するものではありません。もちろん、あなたは自分のニーズに合わせてget_bloginfo()をまとめることができますが、WPの中にget_taxonomy_archive_linkが存在しないという論理的な理由は絶対にありません。

以上のことを言って、私はいつも以下の機能を私のテーマに追加します。

/**
 * Pass in a taxonomy value that is supported by WP's `get_taxonomy`
 * and you will get back the url to the archive view.
 * @param $taxonomy string|int
 * @return string
 */
function get_taxonomy_archive_link( $taxonomy ) {
  $tax = get_taxonomy( $taxonomy ) ;
  return get_bloginfo( 'url' ) . '/' . $tax->rewrite['slug'];
}
7
pixelbacon

"タクソノミーアクターからの用語を含むすべての投稿" でアーカイブへのリンクを求めているようです。あなたが求めているのはワードプレスの世界では意味がないので、ここの全員があなたが特定の用語のアーカイブへのリンクを要求したかのように答えた。

Pixelbaconの答えと6つの投票があるという事実に驚いています。その要求の背後にあります。

データベースでは、分類法が用語との関係を持ち、用語が投稿との関係を持ちます。単一の投稿は分類法と関係がありません。それらを結び付ける唯一のことは、ポストタイプが分類法をサポートできるという事実です。

そのページに表示しようとしているものを単語で書き留めてみましょう。 「分類アクタからの任意の用語を含むpost_type 'post'のすべての投稿を表示する。」

これは基本的には以下のように翻訳されます: "分類法の役者をサポートする" post_type 'post'のすべての投稿を表示します "

したがって、一般的なpost_typeアーカイブ(特定のpost_typeからのすべての投稿を表示)との唯一の違いは、Actor用語が割り当てられていない投稿があり、それらを除外したい場合です。

その場合は、カスタムページを作成し、すべての投稿に対して一般的なクエリを実行し、ループ内で投稿にwp_get_post_terms(get_the_ID(), 'actors')を持つActors用語があるかどうかを確認し、ない場合は除外します。

2
Pikkio

分類法のアーカイブリンクは、次のパターンに従います。

http://{siteurl}/{taxonomy}/{term}

たとえば、 "myblogsite.com"のカテゴリ "news"には、次のアーカイブURLがあります。

http://myblogsite.com/category/news

それであなたのactors分類法の中の "Harrison Ford"アーカイブは次のようになるでしょう。

http://myblogsite.com/actors/harrison-ford
1
EAMann

get_term_link() :)を使用してください。

編集:

これは役に立つかもしれません:分類法のアーカイブリンク: get_the_term_list() 。コーデックスから:

投稿と指定された分類法に関連付けられた分類法用語のHTML文字列を返します。用語はそれぞれの用語一覧ページにリンクされています。

そのため、投稿IDにリンクさせる必要がありますが、分類用語をアーカイブする役割は果たします。

1
moraleida

カスタム分類法を作成するときに、属性rewriteを追加することができます。この属性は、リンクに使用できる分類法の書き換えスラグを設定できます。

register_taxonomy('actors', 'movies', array(
    // ...
    'rewrite' => array( 'slug' => 'actors' ),
    // ...
));

したがって、分類アーカイブリンクを作成するためのリンクを作成するには、次のパターンを使用できます。

http://mysite.com/actors/actor-name
1
Eugene Manuilov