質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

3647閲覧

【WordPress】各言語毎のアーカイブページを表示したい

kotori21

総合スコア11

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2019/01/21 01:31

編集2019/01/22 01:46

前提・実現したいこと

お世話になります。WordPress,PHP初心者です。
現在、WordPressの多言語化プラグイン「Polylang」を使った多言語サイトを制作しています。
言語は「英語」と「日本語」の2言語です。

すべての投稿記事を表示するアーカイブページをそれぞれの言語のページで表示したいです。
英 語サイト:https//example.com/archives/
日本語サイト:https//example.com/ja/archives/

発生している問題

functions.php内で下記のソースコードを記述しましたが、日本語ページだけ表示することができません。
デフォルト言語である英語ページは表示できています。

function post_archive( $args, $post_type ) { if ( 'post' == $post_type ) { $args['rewrite'] = true; $args['has_archive'] = 'archives'; } return $args; } add_filter( 'register_post_type_args', 'post_archive', 10, 2 );

試したこと

現在の言語取得して切り替えてみようと次のように試してみましたが、表示できませんでした。

function post_archive( $args, $post_type ) { $locale = get_locale(); if( $locale == 'en_US' ){ if ( 'post' == $post_type ) { $args['rewrite'] = true; $args['has_archive'] = 'archives'; } return $args; }else if( $locale == 'ja' ){ if ( 'post' == $post_type ) { $args['rewrite'] = true; $args['has_archive'] = 'archives'; } return $args; } } add_filter( 'register_post_type_args', 'post_archive', 10, 2 );

どうすれば日本語のアーカイブページを表示することができるのかアドバイスをいただけないでしょうか。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

そのプラグインは使ったことがありませんが、パっと見た感じで問題っぽい点。

$args['has_archive'] = 'archives';

ここが日本語と英語で同じになっているのが気になります。せっかくif文で分けているのに中身がまるっきり同じなことも……。分岐の意味が……

以下のサイトが参考になるかも知れません。
https://qiita.com/ki6ool/items/888385014c810c9d6bec

投稿2019/02/06 09:00

perpouh

総合スコア299

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kotori21

2019/02/06 12:13

perpouhさん、ご回答ありがとうございます。 すみません。あまりよくわからずネットで調べたものを貼り付けて試していたので・・・。 このように書き換えてみたのですが、日本語ページだけ404になります。 function post_archive( $args, $post_type ) { if ( 'post' == $post_type ) { $args['rewrite'] = true; $locale = get_locale(); if( $locale == 'en_US' ){ $args['has_archive'] = 'archives'; }else if( $locale == 'ja' ){ $args['has_archive'] = 'archives-ja'; } }return $args; } add_filter( 'register_post_type_args', 'post_archive', 10, 2 ); 申し訳ありませんが、どこがおかしいのか教えていただけないでしょうか
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問