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

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

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

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

PHP

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

Q&A

解決済

2回答

2528閲覧

WordPressの固定ページで最新記事のパーマリンクを取得したい

soraatori

総合スコア55

WordPress

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

PHP

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

0グッド

0クリップ

投稿2018/12/23 14:21

前提・実現したいこと

WordPressで多言語ページを制作しています。
Polylangというプラグインを使用し、多言語ページを導入しました。
その際にプラグインが正常に動作しなかったために、フロントページを固定ページで作成しました。
フロントページに最新記事の日付とタイトルを表示しパーマリンクを取得したかったので、ショートコードを使用し表示させることができました。
日付とタイトルの後に「詳細はこちら」というボタンを設置しているので、クリックすると記事ページに飛ぶように設定したいのですが、ショートコードが動きません。
固定ページで記事ページのパーマリンクを取得することはできますでしょうか。

発生している問題・エラーメッセージ

http://xxxxxxxxx.wp.xdomain.jp/[pagelink]

該当のソースコード

HTML

1[news num="1"] 2<a href="[pagelink]"> 3 <div class="detail text-center"> 4 <i class="fas fa-chevron-right"></i> 5 <p>詳細はこちら</p> 6 </div> 7</a>

PHP

1// 最新記事リスト 2function getNewItems($atts) { 3 extract(shortcode_atts(array( 4 "num" => '', //最新記事リストの取得数 5 ), $atts)); 6 global $post; 7 $oldpost = $post; 8 $myposts = get_posts('numberposts='.$num); 9 $retHtml='<ul class="news_list">'; 10 foreach($myposts as $post) : 11 setup_postdata($post); 12 $retHtml.='<li>'; 13 $retHtml.='<span class="news_date">'.get_post_time( get_option( 'date_format' )).'</span>'; 14 $retHtml.='<span class="news_title"><a href="'.get_permalink().'">'.the_title("","",false).'</a></span>'; 15 $retHtml.='</li>'; 16 endforeach; 17 $retHtml.='</ul>'; 18 $post = $oldpost; 19 wp_reset_postdata(); 20 return $retHtml; 21} 22add_shortcode("news", "getNewItems"); 23 24// 投稿タイプのアーカイブ 25function linkpage_func ( $atts ) { 26 extract( shortcode_atts( array( 27 'id' => '', //投稿ID 28 'slug' => '', //ページスラッグ 29 ), $atts ) ); 30 $my_url = home_url( '/' ); 31 if($slug){ //スラッグを指定したときに投稿IDを取得する 32 $id = url_to_postid($my_url. $slug); 33 } 34 $link = get_permalink($id); 35 $title = get_the_title($id); //投稿IDで指定した投稿のレコードをデータベースから取得 36 return '<a href="'. $link .'"' .'>'. $title. '</a>'; 37} 38add_shortcode('pagelink', 'linkpage_func');

補足情報(FW/ツールのバージョンなど)

WordPress 4.9.9

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

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

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

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

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

guest

回答2

0

linkpage_funcですが、$idも$slugも無指定でループ外なのでget_permalinkでは値を取得できないと思います。
getNewItemsのようにget_postsで最新記事を1件取得して、そのidを引数に設定すれば大丈夫ではないでしょうか?

投稿2018/12/28 00:32

tabuu

総合スコア2449

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

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

0

ベストアンサー

ショートコードで本文エリアに書くよりも、front-page.phpを作成してしまうほうが簡単なのでは。

【front-page.phpとhome.phpとindex.phpの関係 | 西沢直木のIT講座】
https://www.nishi2002.com/21237.html

投稿2018/12/23 14:43

kei344

総合スコア69366

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問