私は、パーマリンクhttps://example.com/service
を持つスラッグservice
でカテゴリーを作成しました。
リンク付きのPage:https://example.com/service
。
カテゴリservice
には、https://example.com/service/post1
のようなリンクのある投稿があります
リンクhttps://example.com/service
はカテゴリアーカイブにリダイレクトされていますが、代わりにページをロードしたいと思います。
どうやってやるの?
Page
とPage
のアーカイブのURLが同じ場合は、Category
をロードします。これはデフォルトのWordPressの動作です:カテゴリのアーカイブとページのURLが同じ場合、WordPressはカテゴリのアーカイブではなくページをロードします。 。
そのため、WordPressの設定でこの動作を変更するプラグインがない限り、重複したURLでカテゴリアーカイブではなくページが読み込まれるはずです。
必要なURL構造にはいくつかの作業が必要です。それで、あなたがすでにそれをしていない限り、言われたURL構造を達成するために以下の指示に従ってください:
# URL structure for Pages:
https://example.com/page-slug
これはデフォルトで起こります、あなたは何もする必要はありません。
# URL structure for Categories
https://example.com/category-slug
このため:
WordPress Admin Panel Menu
→Settings
に移動します。.
テキストフィールドに単一のドット(Category base
)を入力します。# URL structure for Posts
https://example.com/category-slug/post-slug
このため:
WordPress Admin Panel Menu
→Settings
に移動します。Custom Structure
を選択し、/%category%/%postname%/
テキストフィールドにCustom Structure
を入力します。何らかの理由でこれから予想される結果が得られない場合は、WordPressインストールでこのURL構造を使用してください。
- WordPress Coreが最新バージョンに更新されました。
- プラグインは起動されていません
- 27 のようなデフォルトのテーマが有効になっています
次に、ページとカテゴリのURLが重複しているとどうなるかを確認します。
あなたが この記事をチェックしてください あなたがこの種のURL構造があなたのカテゴリアーカイブページにいくつかのページネーション問題を引き起こすことをあなたは見るでしょう。これはWordPressが/page/2
の部分を別のページまたは投稿として混同しているために起こります。
たとえば、service
というカテゴリがあり、service
カテゴリには、web development
、hosting
などの投稿があり、次のURLがあるとします。
https://example.com/service
https://example.com/service/web-development
https://example.com/service/hosting
次のように、service
カテゴリの引数ページに複数のページがある可能性があります。
https://example.com/service
https://example.com/service/page/2
https://example.com/service/page/3
このURL構造のため、WordPressはpost
カテゴリの下にスラッグservice
を持つa postをロードしようとしていると考えます。そのポストは ページ区切り付きポスト です。
そのため、service
カテゴリアーカイブの次のページをロードする代わりに、WordPressはスラッグpage
を使用してページ区切り付きの投稿をロードしようとしますが、代わりに404
(page not found)エラーが発生します。
これを修正するために、あなたは次のコードで単純なプラグインを使うかもしれません:
<?php
/*
Plugin Name: Category Pagination Fix
Plugin URI: https://wordpress.stackexchange.com/a/308826/110572
Description: Fix category pagination for possible conflicts with page or post url
Version: 1.0.0
Author: Fayaz Ahmed
Author URI: https://www.fayazmiraz.com/
*/
function wpse308326_fix_category_pagination( $query_string = array() )
{
if( isset( $query_string['category_name'] )
&& isset( $query_string['name'] ) && $query_string['name'] == 'page'
&& isset( $query_string['page'] ) ) {
$paged = trim( $query_string['page'], '/' );
if( is_numeric( $paged ) ) {
// we are not allowing 'page' as a page or post slug
unset( $query_string['name'] );
unset( $query_string['page'] ) ;
// for a category archive, proper pagination query string is 'paged'
$query_string['paged'] = ( int ) $paged;
}
}
return $query_string;
}
add_filter( 'request', 'wpse308326_fix_category_pagination' );