なるほど。add_filter
で登録している関数については、remove_filter
で一度解除したうえで、別関数名で再度登録することで変更が可能となります。
例えば、
【コード修正済み。こちらで動くかと思います】
function sng_document_title_parts($title_part)
{
if (is_author()) {
$title_part['title'] .= 'の書いた記事';
} elseif (is_archive()) {
$title_part['title'] = '「' . $title_part['title'] . '」の記事一覧';
}
return $title_part;
}
//〜略〜
add_filter('document_title_parts', 'sng_document_title_parts');
を上書きしたい場合、
function remove_parent_sng_document_title_parts(){
remove_filter('document_title_parts', 'sng_document_title_parts',10);//解除
}
add_action('after_setup_theme','remove_parent_sng_document_title_parts');
add_filter('document_title_parts', 'my_document_title_parts');//再登録。右側の'〜'が新しい関数名
function my_document_title_parts($title_part)
{
if (is_author()) {
$title_part['title'] = 'Written by '.$title_part['title'];
} elseif (is_archive()) {
$title_part['title'] = 'Category - '.$title_part['title']
}
return $title_part;
}
サルワカくん様
ご返信のほど、誠にありがとうございます!
結果を申し上げると、できました!ありがとうございます!
ただ、少し変更をいたしました。
remove_filter を子テーマのfunctions.php に設定しても、子テーマの方が先に読み込まれるようで、またしても Cannot redeclare がでました。
子テーマ functions.php に、親テーマ内の document_title_parts をremoveするための funciton を作成して、
add_action(‘after_setup_theme’,’関数’)で、親テーマ読み込み後、実行いたしました。
また、sng_document_title_parts の優先順位が、デフォルトの 10 だったため
999 だと remove されないようでした。
remove_filter 内の優先順位を、10に変更すると、書き換えることができました!
ありがとうございます!
(私の拙い英語化、アウトプットして、ブログにしてもいいでしょうか・・・)
問題があったようで、失礼しました。
うまくいったようで安心しました。
また、丁寧な情報提供ありがとうございます。
もちろんブログにして頂いて構いません。
よろしくお願いします。
WordPressテーマSANGOの質問
「Cannot redeclare…」というエラーが表示される
何度も誠に申し訳ございません。
現在、sangoテーマの英語化を行っているのですが、
著者ページ並びにアーカイブページのtitle 変更が上手くいかず、質問させていただきます。
親テーマにある該当する php内の function を、子テーマの functions.php にコピーペーストし編集してアップすると、Cannot redeclare と出てしまいます。
こちらの変更はどうすればよろしいでしょうか。
ご教授頂けますと、大変助かります。