リンクの仕方で質問です。
現在参考書を読みながらwordpressの勉強をしています。
index.phpに
<?php query_posts('category_name=test' ); ?>
<?php if (have_posts()): ?>
<ul class="item-lists">
<?php while(have_posts()): the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?></a>
</li>
<?php endwhile; ?>
</ul>
<?php endif; wp_reset_query(); ?>
というループ文があります。
投稿記事から設定したアイキャッチのみを表示させ横一列にフロートしています。
現在リンク先が共有テンプレートになっており記事一つ一つ、個別に表示されるようになってます。
<?php the_permalink(); ?>を<?php bloginfo('url'); ?>/test/
に変更すれば意図したカテゴリーへリンク出来ますが、この方法で正しいのでしょうか?
また、本来リンクしたいカテゴリーは記事ごとにアンカーを設定しています。(t01~t10)
このループ文の中でアイキャッチに対応した記事のアンカーへリンクするにはどうすれば良いでしょうか?
アドバイス等頂ければ本当に助かります。
No.2ベストアンサー
- 回答日時:
■質問1
<?php the_permalink(); ?>を<?php bloginfo('url'); ?>/test/
に変更すれば意図したカテゴリーへリンク出来ますが、この方法で正しいのでしょうか?
「カテゴリーのアーカイブへリンク」でしたら、もしアーカイブのパーマリンク形式がそうなっていれば、別に固定urlでも構いません。
わざわざ絶対リンクになる<? bolog_info() ?>使わなくても、単に"/wp-name/bcategory-name/ でOKです。
要はパーマリンク設定や、サイト設定に左右されずに、正しいurlを得るのがベストなんだけど、最初から決まっていて変えないのなら固定でもOKよ、というだけです。
■質問2
「アイキャッチに対応した記事」
書き方があいまいで意味不明ですが、「アイキャッチつき投稿のみ表示」ということでしたら、ループ中で
<?php
if ( has_post_thumbnail() ) {
the_post_thumbnail();
}
?>
で判定してやればOKです。
■蛇足
特定カテゴリの記事をループで表示する程度でしたら、query_poosts()だろうが、WP_Query()だろうが、ほとんど違いはありません。
どうせ中でWP_Queryに変換されているだけなので
>わざわざ絶対リンクになる<? bolog_info() ?>使わなくても、単に"/wp-name/bcategory-name/ でOKです。
複雑に書く必要もなかったのですね…ありがとうございます。
>「アイキャッチに対応した記事」
質問内容があいまいになってしまい申し訳ありません。
もっと噛み砕いて質問をさせて頂くと
/*index*/
<?php while(have_posts()): the_post(); ?>
<li>
<a href="/wordpress/test/"><?php the_post_thumbnail(); ?></a>
</li>
<?php endwhile; ?>
</ul>
<?php endif; wp_reset_query(); ?>
/*category-test*/
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div class="box-test"><?php the_content(); ?></div>
<?php endwhile; ?>
<?php else: ?>
<h2>記事がありません</h2>
<?php endif; ?>
indexは投稿記事のアイキャッチ画像のみを横に並べて表示させてます。
category-testは投稿記事の本文のみを表示させてます。
投稿記事にはそれぞれアンカー(div id="t01"~"t10")を本文に付けてます。
indexに並べたアイキャッチ画像をそれぞれi01~i10とするならば
それに対応したcategory-textの記事のt01~t10のアンカーへリンクを貼りたいと考えてます。
何か良い方法があればご指導願えないでしょうか
No.1
- 回答日時:
まず、書籍においては練習のため、説明を省く意図があって敢えてやっていることでしょうが、WP公式(っぽい)リファレンス(
http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3% … )によると、「ひとことで言うと、query_posts() は決して使うべきではありません。 」だそうです。リンク先の「派生的なループ」という所に恐らくやりたい事が書いてあります(これについてはまた別の話題になってしまうのでここでは具体的な使い方は説明しません)。もしデフォルトテーマであるtwentyfourteenのように、featuredタグ(カテゴリではない)を付けることでフィーチャーポストをトップに固定表示させたいのであれば、jetpackを利用して、その機能をサポートするしかないようです(ちなみにtwentyfourteenには独自にその機能が「inc/featured-content.php」に定義されています。そのためtwentyfourteenで定義されているfeaturd contentに関連した関数3、4つ程をコピペしていくだけで自分のテーマにも実装できます)
※この機能は「この投稿を先頭に固定表示」機能(英語だとstiky)とは異なり、より柔軟な機能です。
-----------------------------------------------
本題の「カテゴリへのリンクの作成関数」ですが、ループ中で「the_category($comma)」です。$commaには「', '」などの区切り文字を入れます。引数を何も設定しないとリストで表示されたと思います。似た関数にget_the_category_list()がありますが、これは確かループ外でも使える(と思う。未確認。)のと、「echo get_the_category_list()」しないと出力されないという違いがあったと思います。
リンクへのアンカーの追記に関しては、上記関数を利用するならプラグインの作成方法を知れば、可能です。
WPにおけるプラグインとは、一言で言えば、add_filter()関数を使って、WPの記事出力関数の処理中に、独自に作った関数を割り込ませることです。
例えば以下のコードをthemeを「<テーマファイルのフォルダ>/functions.php」に保存すると、add_filter()によって、the_content()がWPで呼び出される度に、my_func()がthe_content()の処理に割りこむようになります。結果、下記の場合だと記事本文すべてのリンクの語尾に「だにゃん」がつくようになります。
```
<?php
function my_func($content){
$pattern = '/(<a.*?>)(.*?)(</a>)/';
$replace = '${1}${2}だにゃん${3}';
$content = preg_replace($pattern, $replace, $content);
return $content;
}
add_filter('the_content', 'my_func');
```
my_func()はthe_content()の持つ値(記事の本文)を引数$contentとして受け取り、それを加工してthe_content()に返します。the_content()は返された値を自分が処理したものとして、返された値を出力します。
my_func()がthe_content()の処理の、どの段階で割り込むかはWPの当該関数が定義されているソースを見るとわかります。apply_filters()が書かれているところです(多分)。以下でソースが確認できます。
https://developer.wordpress.org/reference/functi …
ちなみに上記サイト( https://developer.wordpress.org/reference/ )はWP関数を調べるのに便利です。ソースが抜粋されているのでその関数がどんな処理をしているのかが分かります。
返信ありがとうございます。
アドバイス頂いたthe_category()、get_the_category_list()について調べた所
<!-- カテゴリのURLとカテゴリ名を取得 -->
<?php
$cat = get_the_category();
$catid = $cat[0]->cat_ID;
$catName = $cat[0]->name;
$getCatURL = get_category_link( $catid );
?>
<!-- 取得したURLとカテゴリ名からリンクを作成 -->
<a href="<?php echo $getCatURL; ?>"><?php echo $catName; ?></a>
という例文を見つけ、試した所/index/test/にリンクを張る事が出来ました。
アンカーリンクについてはアドバイス内容が私には難しく理解が出来かねましたので勉強します。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
- PHP PHP ページング データベース 1 2022/06/16 10:30
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
WP/ 記事タイトルをクリックさ...
-
ワードプレスでカテゴリー毎に...
-
アップロードファイルの数に応...
-
PHPのクッキーによるリダイレクト
-
WordPressのLighting(テーマ)に...
-
Smarty コンバートエラー??
-
国語の感想文(いのうえひさし...
-
ワードプレスのプラグイン
-
ワードプレス。lightning ペー...
-
ワードプレスで、Warning: geti...
-
ワードプレスの403エラーについて
-
テーマをその場で言われ、30分...
-
この文は、どういう意味ですか?
-
意見文のテーマ
-
お願いします。やり方を教えて...
-
windowsにphp7.4をインス...
-
WordPressで空き状況カレンダー
-
Movabletype インストールがで...
-
高校2年生です 臓器移植につい...
-
ムーバブルタイプのサーバ引越...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WordPressのLighting(テーマ)に...
-
アップロードファイルの数に応...
-
PHPのソース変更が反映されない
-
Wordpressで記事がない場合にメ...
-
phpの表示領域をしていしたい!
-
変数で日付を指定し、新しい順...
-
DreamweaverとWordPressの連携
-
外部ファイルの読み込み
-
wordpress投稿内でcgiを動かしたい
-
ワードプレスでカテゴリー毎に...
-
WP/ 記事タイトルをクリックさ...
-
Smarty コンバートエラー??
-
wordpress カスタム投稿タイプ...
-
CentOSでhtaccessを使用してmod...
-
PHPのクッキーによるリダイレクト
-
wordpressのリンクでの質問です。
-
Webデザイナー向けLinuxユーザ...
-
URL短縮ツール「楽々URL」をさ...
-
PHP初心者です。
-
ランキングを表示する際の画像...
おすすめ情報