[設定] > [パーマリンク] で簡単に実行でき、[共通設定] > [カスタム構造] に値を追加します/blog/%postname%/
。そこには、www.site.com/blog/title からアクセスできるブログ投稿が表示されます。
最初の質問が理解できません。に:
ほとんどの投稿の URL にカテゴリを含めないようにしたい
www.site.com/category/category-name を持たないということですか? またはwww.site.com/category/postを持っていませんか?
編集#1
これに答えるには:
www.site.com/category/post は、「ブログ」のカテゴリのブログ投稿にのみ必要なものです > カテゴリが「靴」の場合、URL にカテゴリを表示したくありません。–</p>
まず、パーマリンクを設定して/%postname%/
、すべての投稿にサイト/タイトルがあり、そのリンクからアクセスできるようにすることができます
2 番目: パーマリンクをフィルタリングして、「ブログ」カテゴリの投稿に対して異なる動作をさせる必要があります。
これを試して
add_filter( 'post_link', 'custom_permalink', 10, 2 );
function custom_permalink( $permalink, $post ) {
// Get the categories for the post
$categories = wp_get_post_categories( $post->ID );
foreach ( $categories as $cat ) {
$post_cat = get_category( $cat );
$post_cats[] = $post_cat->slug;
}
// Check if the post have 'blog' category
// Assuming that your 'Blog' category slug is 'blog'
// Change 'blog' to match yours
if ( in_array( 'blog',$post_cats ) ) {
$permalink = trailingslashit( home_url( 'blog/' . $post->post_name ) );
}
return $permalink;
}
3番目: rewrite_rules をフィルタリングする必要があります
add_filter( 'rewrite_rules_array', 'custom_rewrite_rule' );
function custom_rewrite_rule( $rules ) {
$new_rules = array(
'blog/([^/]+)/trackback/?$' => 'index.php?name=$matches[1]&tb=1',
'blog/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?name=$matches[1]&feed=$matches[2]',
'blog/([^/]+)/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?name=$matches[1]&feed=$matches[2]',
'blog/([^/]+)/comment-page-([0-9]{1,})/?$' => 'index.php?name=$matches[1]&cpage=$matches[2]',
'blog/([^/]+)(/[0-9]+)?/?$' => 'index.php?name=$matches[1]&page=$matches[2]'
);
$rules = $new_rules + $rules;
return $rules;
}
パーマリンク設定に移動し、設定を保存して書き換えルールを更新し、上記の変更を有効にします
注: これらの関数をアクティブなテーマfunctions.php
テンプレートに追加します。
注意: まだテストしていませんが、パーマリンクを変更する方法です。同様の方法で、アーカイブと検索結果のパーマリンクを変更しました。