Удаление ненужного текста из меню администратора без CSS
-
16-10-2019 - |
Вопрос
Я ищу способ удалить весь беспристрастный текст из метабокс Worpdress по умолчанию.
Предпочтительно я хотел бы убедиться, что контент не только скрыт через CSS, но и фактически удален из HTML, чтобы он даже не отображался в источнике.
Области, которые меня заинтересованы в удалении, включают:
- Кнопка справки в правом верхнем углу и связывание Div/HTML/Tex
- На приборной панели в прямом времени Metabox я хочу удалить текст, связанный с тем, какая тема используется, и версию WordPress, а также кнопку «Изменение темы».
- На «атрибутах страницы» в нижней части внизу текст «Нужна помощь? Используйте вкладку справки в правом верхнем углу экрана». Я бы хотел, чтобы этот текст был удален
- Под «выдержкой метабокс» есть текст, который я хотел бы удалить
- Любой другой текст, который вы также можете знать, как удалить для очистки WordPress.
Решение
Вот ответ на вопрос № 1. Недостаточно времени прямо сейчас, чтобы сделать все остальное.
1.) Удаление кнопки справки администратора
К сожалению, WordPress не предоставляет крючок, чтобы позволить вам повлиять на кнопку справки в правом верхнем углу, но вы можете использовать Немного грязного взлома Чтобы достичь того, чего вы пытаетесь достичь.
Теперь вы это видите:
(источник: mikeschinkel.com)
Теперь вы этого не сделаете:
(источник: mikeschinkel.com)
Позвонив contextual_help
а также admin_notices
крючки, те, которые называются непосредственно до и сразу после того, как кнопка справочной связи выводится, соответственно, вы можете захватить выходной буфер и удалить атакующий HTML с помощью preg_replace()
. Анкет А ob_start()
/ob_get_clean()
Пара функций в PHP - это то, что вам нужно для буферизации вывода, а затем для захвата этого буферизованного выхода, vilta:
class RemoveAdminHelpLinkButton {
static function on_load() {
add_filter('contextual_help',array(__CLASS__,'contextual_help'));
add_action('admin_notices',array(__CLASS__,'admin_notices'));
}
static function contextual_help($contextual_help) {
ob_start();
return $contextual_help;
}
static function admin_notices() {
echo preg_replace('#<div id="contextual-help-link-wrap".*>.*</div>#Us','',ob_get_clean());
}
}
RemoveAdminHelpLinkButton::on_load();
В целом вы можете использовать эту технику для изменения или удаления практически любого HTML -вывода, сгенерированного WordPress, найдя крючки до и после, но имейте в виду, что это очень хрупкая техника; Если другой плагин изменил выход HTML с того, что вы ожидали preg_replace()
может не соответствовать. Тем не мение...
3.) Удаление текста справки из атрибутов страницы MetaBox
Чтобы удалить текст справки для атрибутов страницы Metabox не требует регулярных выражений, простых str_replace()
Сделаю. (Примечание Найти правильные крючки, которые нужно использовать, заняло больше всего времени.):
class RemovePageAttributesHelpText {
static function on_load() {
add_action('admin_notices',array(__CLASS__,'admin_notices'));
add_action('dbx_post_sidebar',array(__CLASS__,'dbx_post_sidebar'));
}
static function admin_notices() {
ob_start();
}
static function dbx_post_sidebar() {
$match_text = '<p>Need help? Use the Help tab in the upper right of your screen.</p>';
echo str_replace($match_text,'',ob_get_clean());
}
}
RemovePageAttributesHelpText::on_load();
Есть также еще один подход, который вы можете использовать, когда все, что вы хотите сделать, удалить текст из Core, и это использовать 'gettext'
крюк. Следующий код удаляет текст справки из атрибутов страницы Metabox:
class RemovePageAttributesHelpText {
static function on_load() {
add_filter('gettext',array(__CLASS__,'gettext'),10,4);
}
function gettext($translation, $text, $domain) {
if ($text=='Need help? Use the Help tab in the upper right of your screen.') {
$translation = '';
}
return $translation;
}
}
RemovePageAttributesHelpText::on_load();
Обратите внимание, что я осторожен, чтобы использовать этот крюк, так как его называют сотни раз на загрузку страницы; 577 раз только для загрузки административной панели на случай, если я только что протестировал, например. Поэтому, если вы используете его, будьте уверены, что не делаете ничего, что вычислительно "дорогой" например, запуск необработанного SQL -запроса или аналогичный.
4.) Удаление текста из "Выдержка метабокс"
Мы будем использовать опцию № 2 от Technique #3, чтобы лишить справочный текст из MetaBox отрывка (Этот я включил код из техники № 3, так что этот заменяет код в #3):
class RemoveUnwantedPageEditingText {
static function on_load() {
add_action('admin_notices',array(__CLASS__,'admin_notices'));
add_action('dbx_post_sidebar',array(__CLASS__,'dbx_post_sidebar'));
}
static function admin_notices() {
ob_start();
}
static function dbx_post_sidebar() {
$html = str_replace('<p>Need help? Use the Help tab in the upper right of your screen.</p>','',ob_get_clean());
echo str_replace('Excerpts are optional hand-crafted summaries of your content that can be used in your theme.' .
' <a href="http://codex.wordpress.org/Excerpt" target="_blank">Learn more about manual excerpts.</a>','',$html);
}
}
RemoveUnwantedPageEditingText::on_load();
Другие советы
Отличный разговор Джейка Голдмана в WordCamp Mid-Atlantic предоставляет отличное руководство: http://www.cmurrayconsulting.com/wordpress-tips/customizing-wordpress-admin/#more-939
Загрузите хорошо подготовленную тему, которая появляется под слайд-шоу. (Он спрашивает, что если вы используете его код, вы приписываете его ему в ваших комментариях кода.)
Он упоминает, что вы можете получить все идентификаторы виджетов следующим образом: var_dump ($ wp_meta_boxes ['dashboard']);
Вы могли бы: unset ($ wp_meta_boxes ['dashboard'] ['normal'] ['core'] ['dashboard_right_right_now']);
Затем добавьте свой собственный виджет с помощью wp_add_dashboard_widget ().
Посмотрите в wp-admin/incluct/dashboard.php для функции, wp_dashboard_right_now () для модели для того, чтобы добавить (по желанию удалить информацию о теме.)
functions.php
<?php
/*
Based on Jake Goldman's approach
*/
add_action('wp_dashboard_setup', 'custom_dashboard_widgets');
function custom_dashboard_widgets(){
global $wp_meta_boxes;
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);
wp_add_dashboard_widget('my_dashboard_right_now', 'Right Now', 'right_now_no_theme');
}
function right_now_no_theme() {
global $wp_registered_sidebars;
$num_posts = wp_count_posts( 'post' );
$num_pages = wp_count_posts( 'page' );
$num_cats = wp_count_terms('category');
$num_tags = wp_count_terms('post_tag');
$num_comm = wp_count_comments( );
echo "\n\t".'<div class="table table_content">';
echo "\n\t".'<p class="sub">' . __('Content') . '</p>'."\n\t".'<table>';
echo "\n\t".'<tr class="first">';
// Posts
$num = number_format_i18n( $num_posts->publish );
$text = _n( 'Post', 'Posts', intval($num_posts->publish) );
if ( current_user_can( 'edit_posts' ) ) {
$num = "<a href='edit.php'>$num</a>";
$text = "<a href='edit.php'>$text</a>";
}
echo '<td class="first b b-posts">' . $num . '</td>';
echo '<td class="t posts">' . $text . '</td>';
echo '</tr><tr>';
/* TODO: Show status breakdown on hover
if ( $can_edit_pages && !empty($num_pages->publish) ) { // how many pages is not exposed in feeds. Don't show if !current_user_can
$post_type_texts[] = '<a href="edit-pages.php">'.sprintf( _n( '%s page', '%s pages', $num_pages->publish ), number_format_i18n( $num_pages->publish ) ).'</a>';
}
if ( $can_edit_posts && !empty($num_posts->draft) ) {
$post_type_texts[] = '<a href="edit.php?post_status=draft">'.sprintf( _n( '%s draft', '%s drafts', $num_posts->draft ), number_format_i18n( $num_posts->draft ) ).'</a>';
}
if ( $can_edit_posts && !empty($num_posts->future) ) {
$post_type_texts[] = '<a href="edit.php?post_status=future">'.sprintf( _n( '%s scheduled post', '%s scheduled posts', $num_posts->future ), number_format_i18n( $num_posts->future ) ).'</a>';
}
if ( current_user_can('publish_posts') && !empty($num_posts->pending) ) {
$pending_text = sprintf( _n( 'There is <a href="%1$s">%2$s post</a> pending your review.', 'There are <a href="%1$s">%2$s posts</a> pending your review.', $num_posts->pending ), 'edit.php?post_status=pending', number_format_i18n( $num_posts->pending ) );
} else {
$pending_text = '';
}
*/
// Pages
$num = number_format_i18n( $num_pages->publish );
$text = _n( 'Page', 'Pages', $num_pages->publish );
if ( current_user_can( 'edit_pages' ) ) {
$num = "<a href='edit.php?post_type=page'>$num</a>";
$text = "<a href='edit.php?post_type=page'>$text</a>";
}
echo '<td class="first b b_pages">' . $num . '</td>';
echo '<td class="t pages">' . $text . '</td>';
echo '</tr><tr>';
// Categories
$num = number_format_i18n( $num_cats );
$text = _n( 'Category', 'Categories', $num_cats );
if ( current_user_can( 'manage_categories' ) ) {
$num = "<a href='edit-tags.php?taxonomy=category'>$num</a>";
$text = "<a href='edit-tags.php?taxonomy=category'>$text</a>";
}
echo '<td class="first b b-cats">' . $num . '</td>';
echo '<td class="t cats">' . $text . '</td>';
echo '</tr><tr>';
// Tags
$num = number_format_i18n( $num_tags );
$text = _n( 'Tag', 'Tags', $num_tags );
if ( current_user_can( 'manage_categories' ) ) {
$num = "<a href='edit-tags.php'>$num</a>";
$text = "<a href='edit-tags.php'>$text</a>";
}
echo '<td class="first b b-tags">' . $num . '</td>';
echo '<td class="t tags">' . $text . '</td>';
echo "</tr>";
do_action('right_now_content_table_end');
echo "\n\t</table>\n\t</div>";
echo "\n\t".'<div class="table table_discussion">';
echo "\n\t".'<p class="sub">' . __('Discussion') . '</p>'."\n\t".'<table>';
echo "\n\t".'<tr class="first">';
// Total Comments
$num = '<span class="total-count">' . number_format_i18n($num_comm->total_comments) . '</span>';
$text = _n( 'Comment', 'Comments', $num_comm->total_comments );
if ( current_user_can( 'moderate_comments' ) ) {
$num = '<a href="edit-comments.php">' . $num . '</a>';
$text = '<a href="edit-comments.php">' . $text . '</a>';
}
echo '<td class="b b-comments">' . $num . '</td>';
echo '<td class="last t comments">' . $text . '</td>';
echo '</tr><tr>';
// Approved Comments
$num = '<span class="approved-count">' . number_format_i18n($num_comm->approved) . '</span>';
$text = _nx( 'Approved', 'Approved', $num_comm->approved, 'Right Now' );
if ( current_user_can( 'moderate_comments' ) ) {
$num = "<a href='edit-comments.php?comment_status=approved'>$num</a>";
$text = "<a class='approved' href='edit-comments.php?comment_status=approved'>$text</a>";
}
echo '<td class="b b_approved">' . $num . '</td>';
echo '<td class="last t">' . $text . '</td>';
echo "</tr>\n\t<tr>";
// Pending Comments
$num = '<span class="pending-count">' . number_format_i18n($num_comm->moderated) . '</span>';
$text = _n( 'Pending', 'Pending', $num_comm->moderated );
if ( current_user_can( 'moderate_comments' ) ) {
$num = "<a href='edit-comments.php?comment_status=moderated'>$num</a>";
$text = "<a class='waiting' href='edit-comments.php?comment_status=moderated'>$text</a>";
}
echo '<td class="b b-waiting">' . $num . '</td>';
echo '<td class="last t">' . $text . '</td>';
echo "</tr>\n\t<tr>";
// Spam Comments
$num = number_format_i18n($num_comm->spam);
$text = _nx( 'Spam', 'Spam', $num_comm->spam, 'comment' );
if ( current_user_can( 'moderate_comments' ) ) {
$num = "<a href='edit-comments.php?comment_status=spam'><span class='spam-count'>$num</span></a>";
$text = "<a class='spam' href='edit-comments.php?comment_status=spam'>$text</a>";
}
echo '<td class="b b-spam">' . $num . '</td>';
echo '<td class="last t">' . $text . '</td>';
echo "</tr>";
do_action('right_now_table_end');
do_action('right_now_discussion_table_end');
echo "\n\t</table>\n\t</div>";
echo "\n\t".'<div class="versions">';
$ct = current_theme_info();
echo "\n\t<p>";
/*
if ( !empty($wp_registered_sidebars) ) {
$sidebars_widgets = wp_get_sidebars_widgets();
$num_widgets = 0;
foreach ( (array) $sidebars_widgets as $k => $v ) {
if ( 'wp_inactive_widgets' == $k )
continue;
if ( is_array($v) )
$num_widgets = $num_widgets + count($v);
}
$num = number_format_i18n( $num_widgets );
$switch_themes = $ct->title;
if ( current_user_can( 'switch_themes') ) {
echo '<a href="themes.php" class="button rbutton">' . __('Change Theme') . '</a>';
$switch_themes = '<a href="themes.php">' . $switch_themes . '</a>';
}
if ( current_user_can( 'edit_theme_options' ) ) {
printf(_n('Theme <span class="b">%1$s</span> with <span class="b"><a href="widgets.php">%2$s Widget</a></span>', 'Theme <span class="b">%1$s</span> with <span class="b"><a href="widgets.php">%2$s Widgets</a></span>', $num_widgets), $switch_themes, $num);
} else {
printf(_n('Theme <span class="b">%1$s</span> with <span class="b">%2$s Widget</span>', 'Theme <span class="b">%1$s</span> with <span class="b">%2$s Widgets</span>', $num_widgets), $switch_themes, $num);
}
} else {
if ( current_user_can( 'switch_themes' ) ) {
echo '<a href="themes.php" class="button rbutton">' . __('Change Theme') . '</a>';
printf( __('Theme <span class="b"><a href="themes.php">%1$s</a></span>'), $ct->title );
} else {
printf( __('Theme <span class="b">%1$s</span>'), $ct->title );
}
}
*/
echo '</p>';
update_right_now_message();
echo "\n\t".'<br class="clear" /></div>';
do_action( 'rightnow_end' );
do_action( 'activity_box_end' );
}
?>
Alternativ и очень просто: используйте плагин Администрировать, Этот плагин имеет много вариантов, и вы можете добавить свои собственные параметры. Этот плагин мой собственный, и я буду кодировать новый плагин с лучшим кодом. Может быть, это помощь для решения Csutom, чтобы прочитать источник.