テンプレートファイルに触れずに関数を変更する方法を疑問に思います。
私のテーマでは、template-functions.php
ファイルの次の関数が呼び出されます。
if( ! function_exists( 'book_landing_page_footer_credit' ) ) :
/**
* Footer Credits
*/
function book_landing_page_footer_credit(){
echo '<div class="site-info">';
esc_html_e( 'Copyright © ', 'book-landing-page' );
echo esc_html( date_i18n( 'Y' ) );
echo ' <a href="' . esc_url( home_url( '/' ) ) . '">' . esc_html( get_bloginfo( 'name' ) ) . '. </a>';
printf('<a href="%1$s">Book Landing Page By %2$s</a>. ', esc_url( __( 'http://raratheme.com/wordpress-themes/book-landing-page/', 'book-landing-page' ) ), 'Rara Theme');
printf( esc_html__( 'Powered by %s', 'book-landing-page' ), '<a href="'. esc_url( __( 'https://wordpress.org/', 'book-landing-page' ) ) .'" target="_blank">WordPress.</a>' );
echo '</div>';
}
endif;
これはtemplate-hooks.php
ファイルで次のように参照されています。
add_action( 'book_landing_page_footer', 'book_landing_page_footer_credit', 40 );
私の質問は、テンプレートファイルに触れずにその機能をどのように変更できるかということです。
私は以下を試しましたが、うまくいきません。
if (!function_exists('new_credit')) {
function new_credit() {
echo 'This is my site';
}
add_filter('book_landing_page_footer_credit', 'new_credit');
}
明らかに、あなたがそれを修正したいならば、あなたは何かを編集しなければならないでしょう。だから、あなたの最善の行動はそれ自身の関数ファイルで、子テーマを作成することです。
あなたが変更しようとしている関数にはフィルタフックがないので、あなたが試したように、フィルタは機能しません。あなたができることは、 フッターを表示しているアクション を削除してから、同じフックに新しいアクションを追加することです。このような:
add_action ('wp_head','wpse252108_remove_add_action');
function wpse252108_remove_add_action() {
remove_action ('book_landing_page_footer', 'book_landing_page_footer_credit', 40);
add_action ('book_landing_page_footer', 'new_credit', 40)
}
元のアクションが追加された場所であるtemplate-hooks.php
がロードされている場所が不明なため、add/removeアクションを実行するにはwp_head
が早すぎる可能性があります。おそらくwp_footer
のほうが優れていますが、それは遅すぎるかもしれません。