У меня есть сайт, который уже был создан (на основе: wordpress, biznex template), теперь мне нужно его воссоздать с использованием дочернего шаблона. В шаблоне не было дочернего шаблона, и я его создал, и теперь мне нужно перенести все пользовательские материалы в дочерний шаблон.Wordpress child template - functions.php: redeclareing
Проблема у меня есть то, что есть некоторые модифицированные функции в базовых шаблонов файл functions.php, что мне нужно поместить в functions.php дочернего tempalte, но это дает мне следующую ошибку:
Fatal error: Cannot redeclare biznex_contact_ajax() (previously declared in C:\xampp\htdocs\enetix-clean-temp\wp-content\themes\biznex-child\functions.php:16) in C:\xampp\htdocs\enetix-clean-temp\wp-content\themes\biznex\functions.php on line 883
Как сделать child-themes functions.php переопределить функцию базовых шаблонов, не удаляя их из базовых шаблонов functions.php.
Вот одна из функций, для использования в качестве Concret exmaple:
function biznex_contact_ajax(){
$receiver_mail = get_bloginfo('admin_email');
if(!empty($receiver_mail))
{
$mail_title_prefix = _go('email_prefix');
$mail_prefix_cont = sprintf(__('This e-mail was sent from a contact form on %1$s %2$s.'),(get_bloginfo('name')),('('.get_site_url().')'));
$mail_prefix = '</br></br>' .$mail_prefix_cont;
if(empty($mail_title_prefix))
$mail_title_prefix = '';
if(!empty($_POST['biznex-name']) && !empty($_POST['biznex-email']) && !empty($_POST['biznex-subject']) && !empty($_POST['biznex-message'])){
$subject = $mail_title_prefix.$_POST['biznex-subject'];
$reply_to = is_email($_POST['biznex-email']);
if(false!==$reply_to){
$reply_to = $_POST['biznex-name'] . '<' . $reply_to . '>';
$headers = '';
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= 'From:'.$_POST['biznex-name'].'<'.$_POST['biznex-email']."> \r\n";
$headers .= 'Reply-to: ' . $reply_to . "\r\n";
if (wp_mail($receiver_mail, $subject, $_POST['biznex-message'] .$mail_prefix , $headers))
$result = __("Message successfully sent. Thank you!");
else
$result = __("Operation could not be completed.");
}else{
$result = __("You have provided an invalid e-mail address.");
}
}else{
$result = __("Please fill in all the required fields.");
}
}else{
$result = __('Error! There is no e-mail configured to receive the messages.');
}
echo $result;
die;
}
add_action("wp_ajax_biznex_contact", "biznex_contact_ajax");
add_action("wp_ajax_nopriv_biznex_contact", "biznex_contact_ajax");
Почему бы не создать совершенно другое имя функции? – rnevius
Потому что, например, эта функция встроена, и я не знаю, где она используется, и если я переименую ее или создаю другую функцию с теми же свойствами, мне нужно найти, где она вызывается в других файлах, и мне нужно для редактирования всех вещей там тоже .. Я нашел тему, и парень говорит здесь, что ее действительно трудно найти что-то полезное в отношении этой проблемы; он решил все, переименовав функцию в родительские темы function.php, но это нехорошее решение, потому что если произойдет обновление, переименованные функции будут сброшены. – elodpal