About

bbpressのトピックスURLがループ内ですべて同じになってしまう場合の解消法

Share on FriendFeed
[`tweetmeme` not found]

こんにちは。
今日はWordpressのプラグイン、bbpressのカスタマイズ方法について説明します。

bbpressでパーマリンクの設定を特に変えていなくて、プラグインも入れていないのに、ループ内(トピックス一覧ページ)でトピックスのURLだけがすべて同一になるという現象が起こりました。
私の場合はすべての記事のURLが「/forums/topic/topic-0/」になり、このURL内にすべてのトピックスが表示されるというカオスな状態になってしまいました・・・
本来はURLがトピックスごとにURLがある状態を希望していました。

タイトルや投稿名などは正常なのにパーマリンクだけおかしい!?と詰まったのでメモしておきます。

原因

トピックスも所詮カスタム投稿タイプで管理をしているのですが、bbpress側のカスタム投稿のパーマリンクの設定がうまくいってないくさいです(詳しく見てない)
なので、functions.phpにコチラからトピックスのカスタム投稿のパーマリンクを上書きする設定をしてあげればいいだけです。

で、具体的なソースはこんな感じです。

	


add_action('init', 'myposttype_rewrite');
function myposttype_rewrite() {
    global $wp_rewrite;
  
    $queryarg = 'post_type=topic&p=';
    $wp_rewrite->add_rewrite_tag('%topic_id%', '([^/]+)',$queryarg);
    $wp_rewrite->add_permastruct('topic', '/forums/topic/%topic_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;
}

単純に上書きしているだけですね。
もともとのトピックスのURLが/forums/topic/topic-0/なので
$wp_rewrite->add_permastruct(‘topic’, ‘/forums/topic/%topic_id%’, false);
だけ記述をそれにあわせるようにします。

以上です!
お役に立てれば幸いです。

追記

上記ソースだとフォーラムのパーマリンクがおかしいので以下に修正

add_action('init', 'myposttype_rewrite');
function myposttype_rewrite() {
    global $wp_rewrite;
  
    $queryarg = 'post_type=topic&p=';
    $wp_rewrite->add_rewrite_tag('%topic_id%', '([^/]+)',$queryarg);
    $queryarg = 'post_type=forum&p=';
    $wp_rewrite->add_rewrite_tag('%forum_id%', '([^/]+)',$queryarg);
    $wp_rewrite->add_permastruct('topic', '/forums/topic/%topic_id%', false);
    $wp_rewrite->add_permastruct('forum', '/forums/forum/forum-%forum_id%', 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;
}

2014/06/18 | WordPress , , ,

関連記事

no image

WordPressのアイキャッチのサイズを追加しても変更されないのは大体再生成すれば直る件

functions.phpでアイキャッチのサイズを変更する方法といえば...

記事を読む

WordPressの管理画面をカスタマイズしよう!

最近趣味で「コミサ」というwebサイトを作ったのですが、これが会員サイ...

記事を読む

no image

げっ「WP SyntaxHighlighter」が動かない!思ったらプラグインを見直そう

結論から言うとこの2つのプラグインが干渉していたかもしれません。 ...

記事を読む

no image

WPの投稿ステータスをデフォルトで「非公開」にするイケてるプラグイン

そのまんまです。はい。リンク先見てもらえたらいいと思います。 まぁお...

記事を読む

新着記事

no image

WordPressのアイキャッチのサイズを追加しても変更されないのは大体再生成すれば直る件

functions.phpでアイキャッチのサイズを変更する方法といえば...

記事を読む

WordPressの管理画面をカスタマイズしよう!

最近趣味で「コミサ」というwebサイトを作ったのですが、これが会員サイ...

記事を読む

無料でデータベースも使えるサーバを紹介します!

最近趣味でサイトを運営したいなーと思った際に、このドメイン(ousia...

記事を読む

no image

YouTubeの動画をサイトに埋め込むと重い!という人のための解決方法

件名のとおりなのですが、ブログやサイトにyoutubeの動画を埋め込む...

記事を読む

コメント/トラックバック

トラックバック用URL:

コメントフィード




管理人にのみ公開されます

no image
WordPressのアイキャッチのサイズを追加しても変更されないのは大体再生成すれば直る件

functions.phpでアイキャッチのサイズを変更する方法といえば...

bbpressのトピックスURLがループ内ですべて同じになってしまう場合の解消法

こんにちは。 今日はWordpressのプラグイン、bbpressの...

WordPressの管理画面をカスタマイズしよう!

最近趣味で「コミサ」というwebサイトを作ったのですが、これが会員サイ...

無料でデータベースも使えるサーバを紹介します!

最近趣味でサイトを運営したいなーと思った際に、このドメイン(ousia...

no image
YouTubeの動画をサイトに埋め込むと重い!という人のための解決方法

件名のとおりなのですが、ブログやサイトにyoutubeの動画を埋め込む...

→もっと見る

PAGE TOP ↑