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

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

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

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

Q&A

解決済

1回答

5460閲覧

カスタム投稿タイプのパーマリンク設定を投稿idに変更したい

pololo

総合スコア12

WordPress

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

0グッド

0クリップ

投稿2016/10/05 06:59

編集2016/10/06 11:35

###前提・実現したいこと
カスタム投稿タイプのパーマリンクの設定を
投稿記事のidにしたいと思っています。

以下のサイトを参考にfunctions.phpに入力したのですが、
投稿記事へのリンクがおかしくなり、400 Bad Requestがでました。

参考サイト:http://miso0nok.net/2013/10/web/wordpress-custom-post-type-permlink/

投稿記事のURLは以下のようになってしまいます。
https://ドメイン/treatment/%treatment%

ワードプレス管理画面のパーマリンク設定は、
カスタム構造で「/%post_id%」が設定してあります。

できればプラグインを使用せずに、投稿idで正しくリンクさせたいです。

よろしくお願い致します。

###該当のソースコード
functions.php

add_action( 'init', 'create_post_type' ); function create_post_type() { register_post_type( 'treatment', [ 'labels' => [ 'name' => __(‘treatment’), 'singular_name' => __( '記事一覧' ) ], 'public' => true, 'supports' => ['title', 'editor', 'author', 'thumbnail', 'excerpt', 'custom-fields'], 'menu_position' => 5, 'has_archive' => true, 'rewrite' => true, ] ); /* post_id.htmlにRewrite */ add_action('init', 'myposttype_rewrite'); function myposttype_rewrite() { global $wp_rewrite; $queryarg = 'post_type=treatment&p='; $wp_rewrite->add_rewrite_tag('%treatment%', '([^/]+)',$queryarg); $wp_rewrite->add_permastruct('treatment', '/treatment/%treatment_id%.html', false); } add_filter('post_type_link', 'myposttype_permalink', 1, 3); function myposttype_permalink($post_link, $id = 0, $leavename) { global $wp_rewrite; $post = &get_post($id); if ( is_wp_error( $post ) ) return $post; $newlink = $wp_rewrite->get_extra_permastruct($post->post_type); $newlink = str_replace('%'.$post->post_type.'_id%', $post->ID, $newlink); $newlink = home_url(user_trailingslashit($newlink)); return $newlink; } /* post_id.htmlにRewrite */

###補足情報(言語/FW/ツール等のバージョンなど)
WordPress 4.6.1

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

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

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

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

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

guest

回答1

0

ベストアンサー

すいません。
提示されているコードをどういじればいいかはわからないのですが、
カスタム投稿のスラッグが treatment で、https://ドメイン/treatment/ID にしたいということですよね。

こちらの記事が「カスタム投稿タイプのパーマリンク」わかりやすかったので、貼っておきます。

わたしも試してみましたが、ちゃんと表示されました。
参考までに。

投稿2016/10/07 07:39

8-0_nyan5

総合スコア2352

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

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

pololo

2016/10/07 11:54

回答いただきありがとうございます。 おっしゃる通り、「https://ドメイン/treatment/ID」にしたいということです。 貼っていただいた記事も以前試しました。 その時はidに変更することはできたのですが、 記事を3分割しており、2ページ目以降が表示されない現象に陥ってしまいました。 https://ドメイン/treatment/ID/2 のようなURLで404エラーがでてしまいます。 ですので、別の方法を模索しておりました。 こちらの記事でidに変更はできたので、 2ページ目以降がでない方を調べてみたいと思います。 もし、何かご存知であれば教えていただけると幸いです。 ありがとうございました!!!
8-0_nyan5

2016/10/07 12:26

そうですか。 わたしも確認のためもう一度、入れてみたんですが、 設定をミスって(スラッグを書き直すの忘れてしまって)修正して、 試したら投稿のページ自体も404になったのですが、 再度、functions.phpから削除して一からやり直したら ちゃんと、投稿したページも、一覧の2ページ目以降も表示されました。 2ページ目の表示は、 https://ドメイン/treatment/ID/2ではなく、 https://ドメイン/treatment/page/2でした。 参考までに。
pololo

2016/10/07 13:44

確認いただきありがとうございます。 2ページ目がでなかったのは、記事の一覧ではなく、記事自体を3ページに分けていて 記事内のページングで2ページ目と3ページ目が404になっております。 カスタム投稿の記事一覧ページは問題なく見えています。
pololo

2016/10/12 12:42

2ページ目以降が表示されない件は、また別の問題のような気がしますので、 この質問に関しては締め切りたいと思います。 8-0_nyan5さん、お付き合いくださり誠にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問