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

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

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

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

PHP

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

Q&A

解決済

3回答

1473閲覧

WPの記事内ページリンク毎に異なるテキストをつけたい

YumaYamada

総合スコア30

WordPress

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

PHP

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

0グッド

1クリップ

投稿2017/09/26 07:21

編集2017/09/26 07:48

###前提・実現したいこと
Wordpressのwp_link_pages関数を利用して各記事内ページリンク毎に異なるテキストをつけたいです。
例えば日経ビジネスオンラインの記事内ページリンク等の様な実装をしたいです。

上記のページでは、1ページ目は「90%以上が優良の理由は」というリンクになっており、2ページ目では「優良マークは誰のためのものか」というかたちで次のページへのテキストリンクが異なっています。

このようにページ毎に異なるテキストリンクを記事内ページリンクに実装したいと考えています。

###該当のソースコード

ex.php

1 $next_pager_comment_repeat = get_field('next_pager_comment_repeat'); 2 foreach ($next_pager_comment_repeat as $next_pager_comment) { 3 $next_pager = array( 4 'before' => '<div class="single-next-pager">', 5 'after' => '</div>', 6 'link_before' => '<span>', 7 'link_after' => '</span>', 8 'next_or_number' => 'next', 9 'separator' => ' ', 10 'nextpagelink' => '次ページ:'.$next_pager_comment['next_pager_comment'], 11 'previouspagelink' => '' 12 ); 13 wp_link_pages($next_pager); 14 } 15 ?>

###試したこと
Adcanced Custom FieldsのRepeater Fieldを利用して各ページ別に異なるテキストを表示させる方法を試し、異なるテキストを表示させることが出来ましたが1ページに複数出力されてしまいます。
イメージ説明

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

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

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

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

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

guest

回答3

0

このプラグインでそのようなことが実現可能ですがどうでしょう?
Multipage Plugin
https://wordpress.org/plugins/sgr-nextpage-titles/

投稿2017/09/26 08:40

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

YumaYamada

2017/09/26 08:55

ご回答いたがきありがとうございます。 ぜひ参考にさせていただきます。
guest

0

自己解決

自己解決しました。
wp-includes/post-template.phpからwp_link_pages関数を参照した所、グローバル変数を元に条件分岐を行っていたため、その挙動をベースに実装しました。
まず、グローバル変数$multipagesでページ分割しているかどうかを判断します。
ページ分割している場合、現在見ているのページの番号を$pageで判断し、その数字を基にAdvanced Custom FieldのRepeater Fieldに格納されている各配列毎の値(ページ毎に設定される異なるテキスト、next_pager_comment)を取得し、ページ毎に異なるテキストを反映させます。

ex.php

1 <?php 2 global $page, $numpages, $multipage, $more; 3 if ($multipage) { 4   //繰り返しフィールドの各配列の値を指定する為の番号を変数に格納 5 $next_pager_comment_number = $page - 1; 6 //繰り返しフィールド 7 $next_pager_comment_repeat = get_field('next_pager_comment_repeat'); 8 $next_pager = array( 9 'before' => '<div class="single-pager-next button-more">', 10 'after' => '</div>', 11 'link_before' => '<span>', 12 'link_after' => '</span>', 13 'next_or_number' => 'next', 14 'separator' => ' ', 15 'nextpagelink' => '次ページ:'.$next_pager_comment_repeat[$next_pager_comment_number]['next_pager_comment'] 16 ); 17 wp_link_pages($next_pager); 18 } 19 ?>

投稿2017/09/26 08:50

編集2017/09/26 09:39
YumaYamada

総合スコア30

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

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

0

こういうことでしょうか?
試してみてくださいませ

<?php wp_link_pages('next_or_number=next&nextpagelink=next >&previouspagelink=< prev'); ?>

[補足]

リンクは一つしか存在しないようにしたいようなので、foreachは不要かと思います。

投稿2017/09/26 07:36

mtdsnsk

総合スコア789

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問