質問編集履歴

4 文字修正

holic

holic score 119

2017/08/28 18:09  投稿

wordpress カスタム投稿タイプにおいてスラッグ表記を一種類はID名にもう一種類をページ名にしたい。
###前提・実現したいこと
カスタム投稿タイプにおいてスラッグ表記を一種類はID名にもう一種類をページ名にしたいです。
まずカスタム投稿タイプの設定をfunctions.phpに記述しました。
作りたいカスタム投稿名
①ニュース /news/
②実績 /coordination/
```php
//ニュース
add_action('init', 'add_news_post_type');
function add_news_post_type() {
   $params = array(
           'labels' => array(
                   'name' => 'ニュース',
                   'singular_name' => 'ニュース記事',
                   'add_new' => '新規追加',
                   'add_new_item' => 'ニュース記事を新規追加',
                   'edit_item' => 'ニュース記事を編集する',
                   'new_item' => 'ニュース記事',
                   'all_items' => 'ニュース記事一覧',
                   'view_item' => 'ページを確認',
                   'search_items' => '検索する',
                   'not_found' => 'ニュース記事が見つかりませんでした。',
                   'not_found_in_trash' => 'ゴミ箱内にニュース記事が見つかりませんでした。'
           ),
           'public' => true,
           'has_archive' => true,
           'menu_position' => 5,
           'supports' => array(
                   'title',
                   'editor',
                   'thumbnail',
                   //'author',
                   //'custom-fields',
                   //'revisions',
           ),
           'taxonomies' => array('news_cat')
   );
   register_post_type('news', $params);
   /* カスタムタクソノミーを定義 */
   register_taxonomy(
       'news_cat',
       'news',
       array(
       'label' => 'カテゴリー',
       'hierarchical' => true,//カテゴリタイプ
       'rewrite' => array('slug' => 'news/cat')
       )
   );
}
//コーディネーション実績
add_action('init', 'add_coordination_post_type');
function add_coordination_post_type() {
   $params = array(
           'labels' => array(
                   'name' => 'これまでのコーディネイト実績',
                   'singular_name' => 'コーディネーション実績記事',
                   'add_new' => '新規追加',
                   'add_new_item' => 'コーディネーション実績を新規追加',
                   'edit_item' => 'コーディネーション実績を編集する',
                   'new_item' => 'コーディネーション実績',
                   'all_items' => 'コーディネーション実績一覧',
                   'view_item' => 'ページを確認',
                   'search_items' => '検索する',
                   'not_found' => 'コーディネーション実績が見つかりませんでした。',
                   'not_found_in_trash' => 'ゴミ箱内にコーディネーション実績が見つかりませんでした。'
           ),
           'public' => true,
           'has_archive' => true,
           'menu_position' => 5,
           'supports' => array(
                   'title',
                   'editor',
                   'thumbnail',
                   //'author',
                   //'custom-fields',
                   //'revisions',
           ),
           'taxonomies' => array('coordination_cat')
   );
   register_post_type('coordination', $params);
   /* カスタムタクソノミーを定義 */
   register_taxonomy(
       'coordination_cat',
       'coordination',
       array(
       'label' => 'カテゴリー',
       'hierarchical' => true,//カテゴリタイプ
       'rewrite' => array('slug' => 'coordination/cat')
       )
   );
}
```
上記を記述後にwp管理画面の「パーマリンク設定」でカスタム構造 を「/%category%/%post_id%/」に更新しましたら、カスタム投稿ページの準備が完了しました。
ここでの記事名は
・ニュース記事
/news/任意のslug名
・実績記事
/coordination/任意のslug名
となります。これを
・ニュース記事
/news/自動で与えられるID
/news/自動で与えられるID番号
・実績記事
/coordination/任意のslug名
にしたいのです。
そのために、下記の記述をしました。
```php
//カスタムポストのパーマリンクを投稿IDにする
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.'%', $post->ID, $newlink);
    $newlink = home_url(user_trailingslashit($newlink));
    return $newlink;
}
add_filter('post_type_link', 'myposttype_permalink', 1, 3);
function myposttype_rewrite() {
    global $wp_rewrite;
    $wp_rewrite->add_rewrite_tag('%news%', '([0-9]+)', 'post_type=news&p=');
}
add_action('init', 'myposttype_rewrite');
```
記述後にwp管理画面の「パーマリンク設定」を更新しましたら、ページ名の設定がニュースも実績もID名になってしまいました。ID名になるのはニュースだけでよいのです。どのように記述を変えればよいのでしょうか。
wordpressにお詳しい方でお分かりになる方がいらっしゃいましたらご教示をお願い致します。
  • WordPress

    11831 questions

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

3 文字修正

holic

holic score 119

2017/08/28 18:07  投稿

wordpress カスタム投稿タイプにおいてスラッグ表記を一種類はID名にもう一種類をページ名にしたい。
###前提・実現したいこと
カスタム投稿タイプにおいてスラッグ表記を一種類はID名にもう一種類をページ名にしたいです。
まずカスタム投稿タイプの設定をfunctions.phpに記述しました。
作りたいカスタム投稿名
①ニュース /news/
②実績 /coordination/
```php
//ニュース
add_action('init', 'add_news_post_type');
function add_news_post_type() {
   $params = array(
           'labels' => array(
                   'name' => 'ニュース',
                   'singular_name' => 'ニュース記事',
                   'add_new' => '新規追加',
                   'add_new_item' => 'ニュース記事を新規追加',
                   'edit_item' => 'ニュース記事を編集する',
                   'new_item' => 'ニュース記事',
                   'all_items' => 'ニュース記事一覧',
                   'view_item' => 'ページを確認',
                   'search_items' => '検索する',
                   'not_found' => 'ニュース記事が見つかりませんでした。',
                   'not_found_in_trash' => 'ゴミ箱内にニュース記事が見つかりませんでした。'
           ),
           'public' => true,
           'has_archive' => true,
           'menu_position' => 5,
           'supports' => array(
                   'title',
                   'editor',
                   'thumbnail',
                   //'author',
                   //'custom-fields',
                   //'revisions',
           ),
           'taxonomies' => array('news_cat')
   );
   register_post_type('news', $params);
   /* カスタムタクソノミーを定義 */
   register_taxonomy(
       'news_cat',
       'news',
       array(
       'label' => 'カテゴリー',
       'hierarchical' => true,//カテゴリタイプ
       'rewrite' => array('slug' => 'news/cat')
       )
   );
}
//コーディネーション実績
add_action('init', 'add_coordination_post_type');
function add_coordination_post_type() {
   $params = array(
           'labels' => array(
                   'name' => 'これまでのコーディネイト実績',
                   'singular_name' => 'コーディネーション実績記事',
                   'add_new' => '新規追加',
                   'add_new_item' => 'コーディネーション実績を新規追加',
                   'edit_item' => 'コーディネーション実績を編集する',
                   'new_item' => 'コーディネーション実績',
                   'all_items' => 'コーディネーション実績一覧',
                   'view_item' => 'ページを確認',
                   'search_items' => '検索する',
                   'not_found' => 'コーディネーション実績が見つかりませんでした。',
                   'not_found_in_trash' => 'ゴミ箱内にコーディネーション実績が見つかりませんでした。'
           ),
           'public' => true,
           'has_archive' => true,
           'menu_position' => 5,
           'supports' => array(
                   'title',
                   'editor',
                   'thumbnail',
                   //'author',
                   //'custom-fields',
                   //'revisions',
           ),
           'taxonomies' => array('coordination_cat')
   );
   register_post_type('coordination', $params);
   /* カスタムタクソノミーを定義 */
   register_taxonomy(
       'coordination_cat',
       'coordination',
       array(
       'label' => 'カテゴリー',
       'hierarchical' => true,//カテゴリタイプ
       'rewrite' => array('slug' => 'coordination/cat')
       )
   );
}
```
上記を記述後にwp管理画面の「パーマリンク設定」でカスタム構造 を「/%category%/%post_id%/」に更新しましたら、カスタム投稿ページの準備が完了しました。
ここでの記事名は
・ニュース記事
/news/任意のslug名
・実績記事
/coordination/任意のslug名
となります。これを
・ニュース記事
/news/任意のID名
/news/自動で与えられるID名
・実績記事
/coordination/任意のslug名
にしたいのです。
そのために、下記の記述をしました。
```php
//カスタムポストのパーマリンクを投稿IDにする
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.'%', $post->ID, $newlink);
    $newlink = home_url(user_trailingslashit($newlink));
    return $newlink;
}
add_filter('post_type_link', 'myposttype_permalink', 1, 3);
function myposttype_rewrite() {
    global $wp_rewrite;
    $wp_rewrite->add_rewrite_tag('%news%', '([0-9]+)', 'post_type=news&p=');
}
add_action('init', 'myposttype_rewrite');
```
記述後にwp管理画面の「パーマリンク設定」を更新しましたら、ページ名の設定がニュースも実績もID名になってしまいました。ID名になるのはニュースだけでよいのです。どのように記述を変えればよいのでしょうか。
wordpressにお詳しい方でお分かりになる方がいらっしゃいましたらご教示をお願い致します。
  • WordPress

    11831 questions

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

2 コード修正

holic

holic score 119

2017/08/28 11:42  投稿

wordpress カスタム投稿タイプにおいてスラッグ表記を一種類はID名にもう一種類をページ名にしたい。
###前提・実現したいこと
カスタム投稿タイプにおいてスラッグ表記を一種類はID名にもう一種類をページ名にしたいです。
まずカスタム投稿タイプの設定をfunctions.phpに記述しました。
作りたいカスタム投稿名
①ニュース /news/
②実績 /coordination/
```php
//ニュース
add_action('init', 'add_news_post_type');
function add_news_post_type() {
   $params = array(
           'labels' => array(
                   'name' => 'ニュース',
                   'singular_name' => 'ニュース記事',
                   'add_new' => '新規追加',
                   'add_new_item' => 'ニュース記事を新規追加',
                   'edit_item' => 'ニュース記事を編集する',
                   'new_item' => 'ニュース記事',
                   'all_items' => 'ニュース記事一覧',
                   'view_item' => 'ページを確認',
                   'search_items' => '検索する',
                   'not_found' => 'ニュース記事が見つかりませんでした。',
                   'not_found_in_trash' => 'ゴミ箱内にニュース記事が見つかりませんでした。'
           ),
           'public' => true,
           'has_archive' => true,
           'menu_position' => 5,
           'supports' => array(
                   'title',
                   'editor',
                   'thumbnail',
                   //'author',
                   //'custom-fields',
                   //'revisions',
           ),
           'taxonomies' => array('news_cat')
   );
   register_post_type('news', $params);
   /* カスタムタクソノミーを定義 */
   register_taxonomy(
       'news_cat',
       'news',
       array(
       'label' => 'カテゴリー',
       'hierarchical' => true,//カテゴリタイプ
       'rewrite' => array('slug' => 'news/cat')
       )
   );
}
//コーディネーション実績
add_action('init', 'add_coordination_post_type');
function add_coordination_post_type() {
   $params = array(
           'labels' => array(
                   'name' => 'これまでのコーディネイト実績',
                   'singular_name' => 'コーディネーション実績記事',
                   'add_new' => '新規追加',
                   'add_new_item' => 'コーディネーション実績を新規追加',
                   'edit_item' => 'コーディネーション実績を編集する',
                   'new_item' => 'コーディネーション実績',
                   'all_items' => 'コーディネーション実績一覧',
                   'view_item' => 'ページを確認',
                   'search_items' => '検索する',
                   'not_found' => 'コーディネーション実績が見つかりませんでした。',
                   'not_found_in_trash' => 'ゴミ箱内にコーディネーション実績が見つかりませんでした。'
           ),
           'public' => true,
           'has_archive' => true,
           'menu_position' => 5,
           'supports' => array(
                   'title',
                   'editor',
                   'thumbnail',
                   //'author',
                   //'custom-fields',
                   //'revisions',
           ),
           'taxonomies' => array('coordination_cat')
   );
   register_post_type('coordination', $params);
   /* カスタムタクソノミーを定義 */
   register_taxonomy(
       'coordination_cat',
       'coordination',
       array(
       'label' => 'カテゴリー',
       'hierarchical' => true,//カテゴリタイプ
       'rewrite' => array('slug' => 'coordination/cat')
       )
   );
}
```
上記を記述後にwp管理画面の「パーマリンク設定」でカスタム構造 を「/%category%/%post_id%/」に更新しましたら、カスタム投稿ページの準備が完了しました。
ここでの記事名は
・ニュース記事
/news/任意のslug名
・実績記事
/coordination/任意のslug名
となります。これを
・ニュース記事
/news/任意のID名
・実績記事
/coordination/任意のslug名
にしたいのです。
そのために、下記の記述をしました。
```php
//カスタムポストのパーマリンクを投稿IDにする
// function myposttype_permalink($post_link, $id = 0, $leavename) {
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.'%', $post->ID, $newlink);
    $newlink = home_url(user_trailingslashit($newlink));
    return $newlink;
}
add_filter('post_type_link', 'myposttype_permalink', 1, 3);
function myposttype_rewrite() {
    global $wp_rewrite;
    $wp_rewrite->add_rewrite_tag('%news%', '([0-9]+)', 'post_type=news&p=');
}
add_action('init', 'myposttype_rewrite');
```
記述後にwp管理画面の「パーマリンク設定」を更新しましたら、ページ名の設定がニュースも実績もID名になってしまいました。ID名になるのはニュースだけでよいのです。どのように記述を変えればよいのでしょうか。
wordpressにお詳しい方でお分かりになる方がいらっしゃいましたらご教示をお願い致します。
  • WordPress

    11831 questions

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

1 文字追記

holic

holic score 119

2017/08/28 11:41  投稿

wordpress カスタム投稿タイプにおいてスラッグ表記を一種類はID名にもう一種類をページ名にしたい。
###前提・実現したいこと
カスタム投稿タイプにおいてスラッグ表記を一種類はID名にもう一種類をページ名にしたいです。
まずカスタム投稿タイプの設定をfunctions.phpに記述しました。
作りたいカスタム投稿名
①ニュース /news/
②実績 /coordination/
```php
//ニュース
add_action('init', 'add_news_post_type');
function add_news_post_type() {
   $params = array(
           'labels' => array(
                   'name' => 'ニュース',
                   'singular_name' => 'ニュース記事',
                   'add_new' => '新規追加',
                   'add_new_item' => 'ニュース記事を新規追加',
                   'edit_item' => 'ニュース記事を編集する',
                   'new_item' => 'ニュース記事',
                   'all_items' => 'ニュース記事一覧',
                   'view_item' => 'ページを確認',
                   'search_items' => '検索する',
                   'not_found' => 'ニュース記事が見つかりませんでした。',
                   'not_found_in_trash' => 'ゴミ箱内にニュース記事が見つかりませんでした。'
           ),
           'public' => true,
           'has_archive' => true,
           'menu_position' => 5,
           'supports' => array(
                   'title',
                   'editor',
                   'thumbnail',
                   //'author',
                   //'custom-fields',
                   //'revisions',
           ),
           'taxonomies' => array('news_cat')
   );
   register_post_type('news', $params);
   /* カスタムタクソノミーを定義 */
   register_taxonomy(
       'news_cat',
       'news',
       array(
       'label' => 'カテゴリー',
       'hierarchical' => true,//カテゴリタイプ
       'rewrite' => array('slug' => 'news/cat')
       )
   );
}
//コーディネーション実績
add_action('init', 'add_coordination_post_type');
function add_coordination_post_type() {
   $params = array(
           'labels' => array(
                   'name' => 'これまでのコーディネイト実績',
                   'singular_name' => 'コーディネーション実績記事',
                   'add_new' => '新規追加',
                   'add_new_item' => 'コーディネーション実績を新規追加',
                   'edit_item' => 'コーディネーション実績を編集する',
                   'new_item' => 'コーディネーション実績',
                   'all_items' => 'コーディネーション実績一覧',
                   'view_item' => 'ページを確認',
                   'search_items' => '検索する',
                   'not_found' => 'コーディネーション実績が見つかりませんでした。',
                   'not_found_in_trash' => 'ゴミ箱内にコーディネーション実績が見つかりませんでした。'
           ),
           'public' => true,
           'has_archive' => true,
           'menu_position' => 5,
           'supports' => array(
                   'title',
                   'editor',
                   'thumbnail',
                   //'author',
                   //'custom-fields',
                   //'revisions',
           ),
           'taxonomies' => array('coordination_cat')
   );
   register_post_type('coordination', $params);
   /* カスタムタクソノミーを定義 */
   register_taxonomy(
       'coordination_cat',
       'coordination',
       array(
       'label' => 'カテゴリー',
       'hierarchical' => true,//カテゴリタイプ
       'rewrite' => array('slug' => 'coordination/cat')
       )
   );
}
```
上記を記述後にwp管理画面の「パーマリンク設定」でカスタム構造 を「/%category%/%post_id%/」に更新しましたら、カスタム投稿ページの準備が完了しました。ページ名を任意のslug名です。
上記を記述後にwp管理画面の「パーマリンク設定」でカスタム構造 を「/%category%/%post_id%/」に更新しましたら、カスタム投稿ページの準備が完了しました。
ここでの記事名は
・ニュース記事
/news/任意のslug名
その後、下記の記述をしました。
・実績記事
/coordination/任意のslug名
となります。これを
・ニュース記事
/news/任意のID名
・実績記事
/coordination/任意のslug名
にしたいのです。
そのために、下記の記述をしました。
```php
//カスタムポストのパーマリンクを投稿IDにする
// 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.'%', $post->ID, $newlink);
    $newlink = home_url(user_trailingslashit($newlink));
    return $newlink;
}
add_filter('post_type_link', 'myposttype_permalink', 1, 3);
function myposttype_rewrite() {
    global $wp_rewrite;
    $wp_rewrite->add_rewrite_tag('%news%', '([0-9]+)', 'post_type=news&p=');
}
add_action('init', 'myposttype_rewrite');
```
その後上記を記述後にwp管理画面の「パーマリンク設定」を更新しましたら、ページ名の設定がニュースも実績もID名になってしまいました。ID名になるのはニュースだけでよいのです。どのように記述を変えればよいのでしょうか。
記述後にwp管理画面の「パーマリンク設定」を更新しましたら、ページ名の設定がニュースも実績もID名になってしまいました。ID名になるのはニュースだけでよいのです。どのように記述を変えればよいのでしょうか。
wordpressにお詳しい方でお分かりになる方がいらっしゃいましたらご教示をお願い致します。
  • WordPress

    11831 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る