Как добавить новую конечную точку в woocommerce
Я использую woocommerce для веб-сайта и где клиент продает программное обеспечение. Один из вариантов, который я должен добавить, - это запросить кнопку лицензии на моей странице учетной записи.
У меня уже есть функция, которая делает это в файле request-license.php в папке woocommerce в моей теме, но у меня возникают проблемы с добавлением новой точки.
1 ответ
Кажется, у woocommerce нет фильтров при регистрации своих конечных точек, https://github.com/woothemes/woocommerce /blob/master/includes/class-wc-query.php#L84
, поэтому вам нужно добавить новую конечную точку в init hooks, как это показано
add_action( 'init', 'add_endpoint' );
function add_endpoint(){
add_rewrite_endpoint( 'license', EP_ROOT | EP_PAGES );
}
, тогда вам нужно сделать некоторую фильтрацию на wc_get_template
, чтобы вызвать ваши файлы, когда запрос соответствует вашей конечной точке
add_filter( 'wc_get_template', 'custom_endpoint', 10, 5 );
function custom_endpoint($located, $template_name, $args, $template_path, $default_path){
if( $template_name == 'myaccount/my-account.php' ){
global $wp_query;
if(isset($wp_query->query['license'])){
$located = get_template_directory() . '/your-path-to-file.php';
}
}
return $located;
}
, поэтому, когда вы посещаете мою страницу с конечной точкой license
,
скажем http://yourdomain.com/my-account/license/
, который отобразит ваш собственный код