web-dev-qa-db-ja.com

カスタム投稿タイプの書き換えルールを別の関数で変更する

"The Events Calendar"コアプラグインファイル内の投稿タイプとして登録されているカスタム投稿タイプtribe_eventsの書き換えルールを変更したいです(-events-calendar.class 24行目)。

    protected $postTypeArgs = array(
        'public' => true,
        'rewrite' => array('slug' => 'event', 'with_front' => false),
        'menu_position' => 6,
        'supports' => array('title','editor','excerpt','author','thumbnail', 'custom-fields'),
        'capability_type' => array('tribe_event', 'tribe_events'),
        'map_meta_cap' => true
    );

私がやりたいことは、行を修正することです。

        'rewrite' => array('slug' => 'event', 'with_front' => false)

に:

'rewrite' => array( 'slug' => 'event /%lugares%'、 'with_front' => false)

「%lugares%」はカスタム分類法の名前です。

それから私の計画は書き換えプロセスを完了するために次の関数を使うことです:

add_filter('post_type_link', 'events_permalink_structure', 10, 4);
function events_permalink_structure($post_link, $post, $leavename, $sample)
{
    if ( false !== strpos( $post_link, '%lugares%' ) ) {
        $lugares_term = get_the_terms( $post->ID, 'lugares' );
        $post_link = str_replace( '%lugares%', array_pop( $lugares_term )->slug, $post_link );
    }
    return $post_link;
}

問題は、コアプラグインファイルを変更したくないということです。私のテーマのfunctions.phpの中から別の関数のカスタム投稿タイプ書き換え引数を修正する方法はありますか?

ありがとうございます。

4
j-man86

はい、できます。このコードをあなたのテーマのfunctions.phpファイルに貼り付けてください。

 function change_tribe_events_rewrite_rules(){
 global $ wp_post_types; 
 $ rewrite =&$ wp_post_types ['tribe_events']  - > rewrite; 
 $ rewrite ['slug' ] = 'event /%lugares%'; 
} 
 add_action( 'init'、 'change_tribe_events_rewrite_rules'、999); 
2
shea