web-dev-qa-db-ja.com

3.1のバグ修正によりカスタム投稿タイプのパーマリンクが壊れる

だから私はちょうどいくつかのカスタム投稿タイプを使う3.1にサイトを更新しました。

私がサイトを作ったとき、私は$post_typeのためのregister_post_typeパラメータがすべて小文字でなければならなかった時に気づいていませんでした! (コーデックスではうまく書かれていませんでしたが、現在はboldです)。 http://codex.wordpress.org/Function_Reference/register_post_type#Parameters

私のカスタム投稿タイプは、 'rentals'ではなく、たとえば "Rentals"のような国会議事堂の手紙で登録されていました。これは3.1で修正され、大文字で登録された投稿はバックエンドとフロントエンドで完全に壊れていました。

関数に戻って小文字に変更してから、denpress_fによるwordpress.orgへの投稿のおかげで、データベースを起動する前に新しい名前でデータベースを更新するために別の関数を呼び出すことができました。

ここに新機能

if(!get_option('custom_type_updated')){
global $wpdb;
$wpdb->query("UPDATE $wpdb->posts SET post_type = 'custom-rental' WHERE post_type = 'Custom-Rental'");
update_option('custom_type_updated','true');
}

そして、これは小文字で書き換えられたレジスタです。

// Custom page template for rentals      -----------------
function Rental_register_post_type() {
    register_post_type( 'custom-rental', array(
        'public'        => true,
        'can_export'    => true,
        'has_archive'   => 'Rentals',
        'rewrite'       => true,
        'supports' => array(
                ** bunch of supports stuff
            ),
        'labels' => array(
            **bunch of labels
            )
        )
    );
}
add_action( 'init', 'Rental_register_post_type', 0 );

これは壊れたカスタム投稿タイプの主な問題を修正しましたが、カスタムパーマリンク構造を使用している問題はカスタム投稿タイプ '賃貸料'を壊しますが、デフォルトのみが機能します。

たとえば、www.example.com/?custom-rental=7-bedroomsは問題なく動作しますが、カスタムパーマリンク構造は機能しません。各タイプを試し、.htaccessをクリアして404を返します。

何か案は?

2
Wyck

これを回避するには、単にregister_post_type関数の後にflush_rewrite_rules( false );を追加します。あなたはそれについてもっとここで読むことができます http://en.bainternet.info/2011/custom-post-type-getting-404-on-permalinks

2
Bainternet