###前提・実現したいこと
wordpressの編集を行っています。
以下具体的な情報に変更。
具体的に行いたいことは、woocommerce frontend manager
(https://wordpress.org/plugins/wc-frontend-manager/)
というプラグインで、読み込まれるテンプレートファイル(wcfm-view-products-manage.php)を編集することです。
子テーマでの編集を行いたいのですが、子テーマでの上書きはサポートされていないため、フックを利用した編集を行うのがベストだと考えられます。編集内容が多く、wcfm-view-products-manage.phpにあるフックを利用するのは不可能であったため、読み込まれるファイルを自分で作ったnew-wcfm-view-products-manage.phpにしたいと思っています。
###該当のソースコード
class-wcfm-library.php
(wcfm-view-products-manage.phpを読み込んでいるファイル)
class WCFM_Library { public function load_views( $end_point, $menu = true ) { do_action( 'before_wcfm_load_views', $end_point ); switch( $end_point ) { ~~ case 'wcfm-products-manage': require_once( $this->views_path . 'wcfm-view-products- manage.php' ); break; ~~ } } ~~ }
class-wcfm-shortcode-wc-frontend-manager.php
(load_views()の記述があるファイル)
class WCFM_Frontend_Manager_Shortcode { ~~ static public function output( $attr ) { ~~ $WCFM->library->load_views( 'wcfm-dashboard' ); ~~ } }
###試したこと
子テーマfunctions.php
do_actionの引数を最後に変更して、スイッチ文を働かなくさせる
add_action('before_wcfm_load_views','new_wcfm_views'); function new_wcfm_views($end_point){ if($end_point = 'wcfm-products-manage'){ require_once( 子テーマのパス. 'new-wcfm-view-products- manage.php' ); $end_point = ''; } }
この関数が読み込まれたあと、class-wcfm-library.phpまで戻るようにする
add_action('before_wcfm_load_views','new_wcfm_views'); function new_wcfm_views($end_point){ if($end_point = 'wcfm-products-manage'){ require_once( 子テーマのパス. 'new-wcfm-view-products- manage.php' ); return 'return' } }
###問題点
add_filterではなく、add_actionのため、最初の方法は使えなさそうです。
returnの返り値にretunはできないため、2つ上のファイルに戻る方法はなさそうです。
exitを用いると、2つ以上上のファイルの次の部分も読み込まれなくなってしまうので、希望と異なります。
回答1件
あなたの回答
tips
プレビュー