簡単な質問:私は書き換えslug/projects /でcustom-post-typeを作成するプラグインを使用しています
だからmyurl.com/projects/single-project
`projects /をに書き換えたい
'rewrite' => array('slug'=>''),
外部プラグインのregister_post_type()
関数にフックできるようなフックはありますか?
このプラグインが有効になっている場合にのみ、この書き換えを自分のfunctions.phpで行いたいです。カスタムポストタイプの名前“点火製品”を知っています
よろしく、マット
更新
function modify_ign_projects() {
if ( post_type_exists( 'ignition_product' ) ) {
global $wp_post_types, $wp_rewrite;
$wp_post_types['ignition_product']->hierarchical = true;
$args = $wp_post_types['ignition_product'];
//print_r( $args ); // [rewrite] => Array ( [slug] => projects
$wp_rewrite->add_rewrite_tag("%spendenprojekte%", '(.+?)', "projects");
add_post_type_support('ignition_product','page-attributes');
}
}
add_action( 'init', 'modify_ign_projects', 100 );
私はポストタイプ登録フローの至る所で検索しましたが、それをするための正しい方法(フィルターまたはアクションを使用する)を見つけませんでした。
ポストタイプを別のスラッグで再度登録するか(私が好む)、WordPressが実行するコード行を実行してregister_post_typeで書き換え規則を構築することができます。
この投稿タイプをslug book
に登録し、このトリックを使って変更しました。私はそれが100%正しいかどうかわからない(私が同じ投稿タイプのために規則を書き換えているので)が、それはうまくいく。
add_action('registered_post_type', 'testbook', 10, 2);
function testbook($post_type, $args) {
global $wp_rewrite;
if ($post_type == 'book') {
$args->rewrite['slug'] = 'changed_slug_book'; //write your new slug here
if ( $args->has_archive ) {
$archive_slug = $args->has_archive === true ? $args->rewrite['slug'] : $args->has_archive;
if ( $args->rewrite['with_front'] )
$archive_slug = substr( $wp_rewrite->front, 1 ) . $archive_slug;
else
$archive_slug = $wp_rewrite->root . $archive_slug;
add_rewrite_rule( "{$archive_slug}/?$", "index.php?post_type=$post_type", 'top' );
if ( $args->rewrite['feeds'] && $wp_rewrite->feeds ) {
$feeds = '(' . trim( implode( '|', $wp_rewrite->feeds ) ) . ')';
add_rewrite_rule( "{$archive_slug}/feed/$feeds/?$", "index.php?post_type=$post_type" . '&feed=$matches[1]', 'top' );
add_rewrite_rule( "{$archive_slug}/$feeds/?$", "index.php?post_type=$post_type" . '&feed=$matches[1]', 'top' );
}
if ( $args->rewrite['pages'] )
add_rewrite_rule( "{$archive_slug}/{$wp_rewrite->pagination_base}/([0-9]{1,})/?$", "index.php?post_type=$post_type" . '&paged=$matches[1]', 'top' );
}
$permastruct_args = $args->rewrite;
$permastruct_args['feed'] = $permastruct_args['feeds'];
add_permastruct( $post_type, "{$args->rewrite['slug']}/%$post_type%", $permastruct_args );
}
}
Flush_rewrite_rulesを呼び出していますか?
カスタム投稿タイプのスラッグを変更する場合は、flush_rewrite_rulesも呼び出す必要があります。
あなたはここでより多くの文書を見つけることができます WP3.1でカスタム投稿タイプアーカイブを設定しますか?運が良ければ?
そしてここに https://codex.wordpress.org/Function_Reference/flush_rewrite_rules