質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ページネーション

Webアプリケーションにおいて、1ページに収まらないコンテンツを、各ページへのリンクを並べてアクセスしやすくする手法をページネーションと呼びます。

Q&A

解決済

2回答

1626閲覧

【WordPress】ページネーションに設定したサムネイルが、記事ごとに設定したものに対応していない

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ページネーション

Webアプリケーションにおいて、1ページに収まらないコンテンツを、各ページへのリンクを並べてアクセスしやすくする手法をページネーションと呼びます。

0グッド

0クリップ

投稿2021/10/11 09:28

編集2021/10/11 10:15

発生する現象
【ページネーションに設定したサムネイルが、記事ごとに設定したものに対応していない】
添付のコードだと、カスタムフィールドで設定した、サムネイルは確かに設定されますが
「前の記事を読む」のサムネイルも「次の記事を読む」のサムネイルも
全く同じになってしまう現象が発生しております。
つまりその記事ごとに設定された「カスタムフィールドの画像」が出ないという意味です。
※WPのアイキャッチ画像機能ではなく投稿内の「カスタムフィールド」の画像を呼び出す形式です。

添付画像
ページネーションに画像を「前」と「次」の記事のサムネイルを出力するコードを書きました。
作成イメージはこんな感じです、※実際の記事なのでちょっと画像は文字で隠しています
イメージ説明

コードについて
functions.phpでやっている処理
ページネーション「前へ」「次へ」の横にdivタグを作って、その中にカスタムフィールドで設定した画像を出力する。
もしなければnoimgを出力する

こちらfunctions.phpの記述ミスな気はしていますが、原因が特定できず
お力いただけないでしょうか。よろしくお願いいたします。

ページネーションのコード
※post_typeの値はテンプレートファイルによって変わります

<?php the_post_navigation( array( 'prev_text' => '前の記事を読む', 'next_text' => '次の記事を読む' ) ); ?> コード

functions.phpにページネーションの出力条件を設定

function nendebcom_add_img_next_prev_post_link( $output, $format, $link, $post, $adjacent ){ $imagePost = get_field( 'postSquareTypeImage' ); if( $imagePost ) { $post_thumbnail_img = wp_get_attachment_image( $imagePost ); } else{ $post_thumbnail_img = '<img src="' . includes_url( 'img/noimg.png' ) . '" alt="画像が設定されていません" />'; } $output = str_replace( '<div class="nav-' . $adjacent . '">', '<div class="nav-' . $adjacent . '">' . $post_thumbnail_img, $output ); return $output; } add_filter( 'next_post_link', 'nendebcom_add_img_next_prev_post_link', 10, 5 ); add_filter( 'previous_post_link', 'nendebcom_add_img_next_prev_post_link', 10, 5 ); コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

get_field( 'postSquareTypeImage' );

get_field()

get_field($selector, [$post_id], [$format_value]);

$post_id (mixed) (Optional) The post ID where the value is saved. Defaults to the current post.

とあるように post id を省略すると現在の投稿ID が使われます。

たとえば、

get_field( 'postSquareTypeImage', $post->ID );

のように 第2パラメータに post ID を指定するとどうなりますか?

投稿2021/10/11 12:12

CHERRY

総合スコア25218

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/10/11 23:02

丁寧な回答ありがとうございます!なんとこんな見落としとは。 詰まっていたので感謝いたします。わかりやすくありがとうございます。
guest

0

たぶん、

$imagePost = get_field( 'postSquareTypeImage' );

ここの部分が

$imagePost = get_field( 'postSquareTypeImage', $post );

ではないでしょうか。

get_field()
https://www.advancedcustomfields.com/resources/get_field/

$post_id (mixed) (Optional) The post ID where the value is saved. Defaults to the current post.

デフォルトでそのページのカスタムフィールドを表示するので、ID を指定してあげないといけないのではないでしょうか。

参考まで。

投稿2021/10/11 11:59

8-0_nyan5

総合スコア2352

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/10/11 23:02

回答ありがとうございます。無事解決できました。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問