Я новичок в WordPress и хочу добавить пользовательскую кнопку на панель администратора в целеуказатель тема. Я знаком с концепцией ловушки действий и уже успешно реализовал свою собственную ловушку действий с do_action_ref_array()
и назвал это из functions.php
с add_action()
,
Подход 1 (поместить определение кнопки статически в php-файл)
Виджет боковой панели, к которому я хочу добавить дополнительную кнопку, встроен в файл ‘dashboard-page.php’. Вот выдержка из кода:
$pfmenu_output .= ($setup11_reviewsystem_check == 1) ? '<li><a href="'.$setup4_membersettings_dashboard_link.$pfmenu_perout.'ua=reviews"><i class="pfadmicon-glyph-377"></i> '. $setup29_dashboard_contents_rev_page_menuname.'</a></li>' : '';
$pfmenu_output .= '<li><a href="http://my.testsite.com/market"><i class="pfadmicon-glyph-476"></i> '. esc_html__('Car Market','pointfindert2d').'</a></li>';
$pfmenu_output .= '<li><a href="'.esc_url(wp_logout_url( home_url() )).'"><i class="pfadmicon-glyph-476"></i> '. esc_html__('Logout','pointfindert2d').'</a></li>';
Вторая строка — мой статический подход. Кнопка добавлена в виджет боковой панели правильно. Но мне нужно поместить этот код в functions.php
из моего Child-Theme
чтобы сохранить его во время будущих процедур обновления.
Подход 2 (более динамичный с самоопределением action-hook)
Я также попытался добавить свой собственный хук действий вместо статического добавления кнопки (заменил вторую строку определением хука действий:
$pfmenu_output .= ($setup11_reviewsystem_check == 1) ? '<li><a href="'.$setup4_membersettings_dashboard_link.$pfmenu_perout.'ua=reviews"><i class="pfadmicon-glyph-377"></i> '. $setup29_dashboard_contents_rev_page_menuname.'</a></li>' : '';
do_action_ref_array( 'pf_add_widget_button', array(&$pfmenu_output) );
$pfmenu_output .= '<li><a href="'.esc_url(wp_logout_url( home_url() )).'"><i class="pfadmicon-glyph-476"></i> '. esc_html__('Logout','pointfindert2d').'</a></li>';
После этого я добавил add_action()
позвони моей детской теме function.php
и добавил туда кнопку, которая тоже отлично работает:
function swi_add_button_to_widget(&$pfmenu_output) {
$pfmenu_output .= '<li><a href="http://my.testsite.com/market"><i class="pfadmicon-glyph-476"></i> '. esc_html__('Car Market,'pointfindert2d').'</a></li>';
}
add_action( 'pf_add_widget_button', 'swi_add_button_to_widget' );
Определение проблемы
Но оба описанных выше подхода будут работать, пока я не обновлю тему PointFinder в первый раз, так как dashboard-page.php
наиболее вероятно, будет переопределено во время обновления.
Я не нашел никаких готовых хуков действий, реализованных командой разработчиков тем, просматривая все файлы, ища do_action()
а также do_action_ref_array()
, Ничего такого…
Решение ?
Поэтому есть ли другой способ получить доступ к этому $pfmenu_output
переменная из моей дочерней темы, чтобы добавить дополнительную кнопку?
Я полностью застрял, когда разработчики темы не встроить некоторые готовые хуки для этой конкретной цели?
dashboard-page.php
к вашей детской темеЯ только расширяюсь Комментарий Себастьяна. Вы можете скопировать весь dashboard-page.php
файл (с помощью самостоятельно добавленного действия) в папку вашей дочерней темы. Затем вам придется искать место в родительской теме, где dashboard-page.php
файл включен. Надеюсь, он включен в одну из родительских тем. стандартные шаблоны файлов. Затем вы просто копируете этот файл шаблона в свою дочернюю тему, чтобы переопределить его. Тогда вам придется изменить эту строку, которая включает в себя dashboard-page.php
файл для включения того же файла в дочернюю папку.
Например, если page.php
Файл шаблона имеет что-то вроде этого:
include (get_template_directory() . '/dashboard-page.php')
Вы можете скопировать page.php
файл в вашей дочерней теме и измените эту строку следующим образом:
include (get_stylesheet_directory() . '/dashboard-page.php')
Обратите внимание, что get_stylesheet_directory()
извлекает путь к папке дочерней темы и get_template_directory()
извлекает путь к папке родительской темы.
Важный: Возможно, что dashboard-page.php
файл не включен ни одним из стандартных файлов шаблонов, которые могут быть переопределены, но вместо этого включен другими нестандартными файлами шаблонов, которые включены в родительскую тему. В этом случае вам придется скопировать каждый включенный файл в dashboard-page.php
файл. И убедитесь, что каждый include
использует версию дочерней темы каждого файла.
Один из альтернативных подходов — использовать код JavaScript для вставки кнопки. Вы можете добавить код javascript в один из шаблонов дочерней темы, чтобы динамически изменять меню после загрузки страницы. Я взглянул на демонстрацию темы, и похоже, что элемент списка для боковой панели имеет класс с именем «pf-sidebar-menu». Вы можете просто добавить следующий код, который нацелен на этот класс и вставит вашу кнопку после первого элемента списка:
jQuery(".pf-sidebar-menu > li:nth-child(1)").after('<li><a href="http://my.testsite.com/market"><i class="pfadmicon-glyph-476"></i>Car Market</a></li>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul class="pf-sidebar-menu">
<li><a href="#"><i class="pfadmicon-glyph-377"></i>Something</a></li>
<li><a href="#"><i class="pfadmicon-glyph-476"></i>Logout</a></li>
</ul>
использование PHP Code Widget
плагин