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

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

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

SEO(Search Engine Optimization)は、検索エンジンでウェブページがランキング上位に上がるように工夫する様々なテクニックの事です。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

WordPress

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

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

2652閲覧

wordpress・カスタム投稿の記事ページURL末尾に、スラッシュをつけたい

nan77

総合スコア6

SEO

SEO(Search Engine Optimization)は、検索エンジンでウェブページがランキング上位に上がるように工夫する様々なテクニックの事です。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

WordPress

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

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

2クリップ

投稿2019/02/22 07:07

編集2022/01/12 10:55

前提・実現したいこと

wordpressにおいて、カスタム投稿の記事ページURL末尾に、スラッシュをつけたい

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

wordpressでサイトを公開しています。
全ページにカノニカルとして、末尾スラッシュ有りのURLを指定していますが
カスタム投稿の記事だけ、実際のURL上、末尾にスラッシュがつかず
つかないものが正規と認識され、困っております。

【現在、パーマリンクの設定は以下のようになっています】

[カスタム構造]にチェック
https://www.☆☆.com/%category%/%post_id%.html

[オプション] カテゴリベースに .をつけています。

その結果反映として
[固定ページ](問題なし)
https://www.☆☆.com/スラッグ/

[一般ブログ投稿のカテゴリ/アーカイブ](問題なし)
https://www.☆☆.com/blog(カテゴリ名)/
https://www.☆☆.com/book(カテゴリ名)/ など
全てにスラッシュがつき、その状態でsitemapにも掲載されています。

[一般ブログ投稿のカテゴリ内記事](全て問題なし)
https://www.☆☆.com/blog/3123.html
https://www.☆☆.com/book/sweet.html
となり

ドメイン/カテゴリ名/記事スラッグや指定した数字などを用いた .htmlとなり
希望する状態となっています。
そのようにsitemapにも掲載されています。


しかしカスタム投稿に関してのみ、
希望しない状態となります

[カスタム投稿: 各種のアーカイブ(news)(faq)](問題なし)
https://www.☆☆.com/news/
https://www.☆☆.com/faq/
スラッシュがついており、sitemapにもあり、問題ありません。

[カスタム投稿内にタスクノミー分類があるもの]
faqのみ分類をもっております(タスクノミー)
https://www.☆☆.com/faq/は、全ての分類にリンクされるアーカイブページです

以下は分類されたタスクノミーのリンク先、アーカイブリンクとなります。
https://www.☆☆.com/faq-cat/aaa/
https://www.☆☆.com/faq-cat/bbb/
https://www.☆☆.com/faq-cat/ccc/

現状、末尾にスラッシュがつき、そのようにsitemapにもあり問題ありません。


しかしカスタム投稿全種の各記事においては、

https://www.☆☆.com/カスタム投稿第一分類/スラッグ
つまり、末尾にスラッシュがつかないアドレスとなってしまっております。

カノニカルは全てのページにて
スラッシュありを指定しているのですが
カスタム投稿の全記事のみ、ついていないものを、正規URLと認識されてしまっているようです。

他のページにおける現在の状態を変更することなく
なんとか改善できないものかと大変悩んでおります・・

カスタム投稿の全記事に対して、
第一希望は
https://www.☆☆.com/カスタム投稿第一分類/スラッグ/

第二希望は、その他の投稿ページと同じように
https://www.☆☆.com/カスタム投稿第一分類/スラッグ.html

とさせたいです。
(まだページ数が少ないので、第一希望が難しい場合は第二希望も検討できます)

何とか実現できないものでしょうか?
有識者の皆様、どうぞお力をお貸し下さい・・

追記です。

function.phpに以下のような記述を行っています

//URLの末尾に「/」を付ける
function add_slash_uri_end($uri, $type) {
if ($type != 'single') {
$uri = trailingslashit($uri);
}
return $uri;
}
add_filter('user_trailingslashit', 'add_slash_uri_end', 10, 2);

ブログ投稿における個別記事は.htmlとなっているため、
html/とさせないための2行目が影響しているのでしょうか?
(カスタム投稿記事のテンプレートは全て single-(カスタム投稿名).php)

もしこれが影響しているとすれば、
カスタム投稿の記事にも末尾に/をつける設定を行うことはできるでしょうか?

宜しくお願いいたします・・

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/02/22 07:38

ようは カスタム投稿のやつを example.com/[第1分類]/[スラッグ]/abc.htmlを example.com/[第1分類]/[スラッグ]/abc/にしたいということですか?
nan77

2019/02/22 09:18

ありがとうございます!!!! yoshi様と同じ形式でもう一度書かせてもらいます。 固定ページ=example.com/[スラッグ]/ ブログ(一般投稿)カテゴリアーカイブ=example.com/カテゴリ/ 投稿=example.com/カテゴリ名/[スラッグ].htmlとなっております。 そこを変更したいとは考えておりません。 カスタム投稿タイプは2種類です。(faqとbook) それぞれのアーカイブURLが example.com/[カスタム投稿タイプ名(faqやbook)]/  となっております。 faqのみ更なる分類を持ち(タスクノミー) それぞれののアーカイブページは example.com/faq_cat/(タスクノミー)/ となっています。 faqもbookも同じように カスタム投稿タイプに含まれる記事全てのURLが カスタム投稿/カスタム投稿の種類名(faqなど種類)/[スラッグ] となってしまっていて、末尾に何もついてない状態です。 そのため、他のページと同じように 末尾にスラッシュをつけたく思っています。 ※それがどうしても難しい場合は、 スラッシュのかわりに.htmlをつけてもよいという希望になります。 (通常の投稿記事と同じように) わかりづらくてすみません>< どうぞ宜しくお願いいたします!
退会済みユーザー

退会済みユーザー

2019/02/23 03:55 編集

えっとおそらくですが何か勘違いをされていると思います。 背景のスラッシュひとつで全く異なります。 example.com/.../abc/は本来example.com/.../abc/index.html(phpやcgiもあり)です。 対してexample.com/.../abcはexample.com/.../abc.php(htmlやcgiもあり)です。 前者はほとんどのサーバーでデフォルトで使えますが、後者は.htaccessを使わなければいけません。
nan77

2019/02/23 12:00

そうですね・・私もその点は理解しています。 単純にwordpress上にて、 表示されているページのURLとなっているだけで それを変えたい、 そのようにご理解いただければと思います。 全て末尾にスラッシュ、もしくは.htmlがつくように 設定しているはずなのに カスタム投稿の記事ページだけ、末尾にスラッシュがつかないのです。 それで困っております。 ご検討いただけますよう、宜しくお願いいたします><・・(涙)
fareastnoise

2019/02/23 14:17

カスタム投稿タイプのパーマリンクの設定はどのようにされていますでしょうか? もし、プラグインを使っていらっしゃらないのであれば、「Custom Post Type Permalinks」などのプラグインで設定すれば、カスタム投稿タイプのみ新たに設定ができるかと思います。 他の設定方法でされている場合は何で設定したか教えていただきたいです。
guest

回答1

0

もしカスタム投稿タイプのパーマリンク設定をされていないのでしたら、このプラグインで該当部分の設定を変更すれば解決しそうに思います。

Custom Post Type Permalinks
https://ja.wordpress.org/plugins/custom-post-type-permalinks/

試してみてください。

投稿2019/02/23 14:30

fareastnoise

総合スコア250

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

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

nan77

2019/02/23 21:02

回答本当に有難うございます!!! プラグイン、インストールして試してみましたが、 /%postname% のあとにスラッシュを入力し、更新ボタンを押しても 一切反映されません。 (パーマリンク設定も変更されず、実際のページもスラッシュはつきません) ※ちなみに、/%postname%.htmlをつけますと、そのように反映されました!! できましたら、/%postname%/ にできないものかと希望しています。 どうぞ宜しくお願いいたします。 (もしかすると、ブログ投稿の記事は全て.htmlとなっているため singleページからはスラッシュを取る設定を行っているのが影響しているのでしょうか? --------- //URLの末尾に「/」を付ける function add_slash_uri_end($uri, $type) { if ($type != 'single') { $uri = trailingslashit($uri); } return $uri; } add_filter('user_trailingslashit', 'add_slash_uri_end', 10, 2); --------------- これが、カスタム投稿の記事にも反映されてしまっているのかもしれません。 カスタム投稿の記事からは、 スラッシュを取らない、そのような設定を追加する 必要がなのかなと、考えた次第ですが、その方法がわかりません・・。)
fareastnoise

2019/02/24 11:27

このfunctions.phpの記述をいったんコメントアウトして、これがない状態にしてからパーマリンクを変更した場合、どうなりますでしょうか?
nan77

2019/02/25 04:06

私の拙い質問にお付き合いいただいて本当にありがとうございます・・ ご指示いただいたとおり、テストしてみましたが、何も代わりありませんでした(涙) そもそも不必要な設定なのかも・・>< それと、スラッグが数字と英語というところも気になりましたので 念のため、通常の単語に変更して、どうなるかテストしてみたのですが スラッグを変更してもURLの末尾にスラッシュがつくことはありませんでした・・ 他になにか、カスタム投稿に手を加えてしまっている箇所引き続き調べて、またご報告します! 宜しくお願いします。
fareastnoise

2019/02/27 03:50 編集

プラグインの説明文に、「末尾の '/' の有無は、標準のパーマリンク構造の設定に統一されます。」とあるので、末尾のスラッシュに関しては統一されてしまうようですね。 htmlで統一する第2希望で行くのが良さそうな気もします。 試しに、blogというカスタム投稿タイプのみに末尾スラッシュをつけるのをやってみたら、いちおう付きました。他との兼ね合いで不具合も出るかと思うのでそのままこれだけで使うことはできないとは思いますが、参考にしてください。 ---- function add_slash_uri_end($uri, $type) { if( is_singular( 'blog' ) ) { $uri = trailingslashit($uri); } return $uri; } add_filter('user_trailingslashit', 'add_slash_uri_end', 10, 2);
nan77

2019/03/05 02:44

本当に本当に回答有難うございます!!!!! 以下の内容がもともとありましたので 別に追加する形で記入したらエラーになりました。 --------------- //URLの末尾に「/」を付ける function add_slash_uri_end($uri, $type) { if ($type != 'single') { $uri = trailingslashit($uri); } return $uri; } add_filter('user_trailingslashit', 'add_slash_uri_end', 10, 2); ---- そこで、教えて頂いたカスタム投稿の記述を ためしに以下のように追加してみましたら、 希望通りにカスタム投稿記事ページ末尾にも、スラッシュがつくようになりました!! 思わず、飛び上がり喜びましたが。。。 function add_slash_uri_end($uri, $type) { if ($type != 'single') { $uri = trailingslashit($uri); } if( is_singular( 'カスタム投稿タイプ名' ) ) { $uri = trailingslashit($uri); } if( is_singular( 'カスタム投稿タイプ名' ) ) { $uri = trailingslashit($uri); } return $uri; } add_filter('user_trailingslashit', 'add_slash_uri_end', 10, 2);// この書き方で、今後、動作的には、問題ないでしょうか??? もっとすっきり記述できる方法はあるのでしょうか?
fareastnoise

2019/03/05 08:30

未検証ですが、Codexを読んだら、is_singular はまとめられそうですね。 https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/is_singular if文のところを、 if ($type != 'single' || is_singular() ) { $uri = trailingslashit($uri); } もしくは、 if ($type != 'single' || is_singular( array( 'カスタム投稿タイプのスラッグその1', 'カスタム投稿タイプのスラッグその2' ) ) ) { $uri = trailingslashit($uri); } で動くかと思います。 それとなのですが、これで記事のシングルページのURLにはスラッシュがついたわけですが、 おそらく、アーカイブページなどでリストアップされている各投稿記事へのリンクにはスラッシュが付いてないと思います。 その場合、該当するファイル中のURLの出力部分を trailingslashit()で囲んであげて出力させたら良いかと。 他との兼ね合いで不具合等出ないかどうかもご確認ください。 ご健闘を! :D
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問