netconstructorcom
  • 0
Мастер

Удаление ненужного текста из меню администратора без CSS

  • 0

Я ищу способ удалить весь ненужный текст из метабоксов worpdress по умолчанию.

Предпочтительно я хотел бы убедиться, что содержимое не просто скрыто с помощью CSS, но фактически удалено из HTML, поэтому оно даже не отображается в источнике.

Области, которые я заинтересован в удалении, включают:

  1. Кнопка HELP в правом верхнем углу и связывание DIV/HTML/текста при нажатии на нее
  2. На панели инструментов в метабоксе «Прямо сейчас» я хочу удалить текст, связанный с используемой темой и версией WordPress, а также кнопку «Изменить тему».
  3. В метабоксе «Атрибуты страницы» внизу есть текст «Нужна помощь? Воспользуйтесь вкладкой «Справка» в правом верхнем углу экрана». Я бы хотел, чтобы этот текст был удален
  4. В «Метабоксе отрывка» есть текст, который я хотел бы удалить.
  5. Любой другой текст, который вы также знаете, как удалить, чтобы очистить WordPress.
Share
  1. Привет @NetConstructor. Вы задаете здесь 5 разных вопросов. Поскольку решение для каждого разное, как насчет того, чтобы задать 5 разных вопросов, каждый с хорошо названным заголовком? Если вы это сделаете, то ответ на один из этих вопросов не будет казаться такой уж большой работой, и, возможно, разные люди смогут ответить на разные вопросы. Просто мысль…

    • 0
    • @NetConstructor.com — Как вам такая ирония? Мой основной клиент попросил меня сегодня сделать много подобных вещей в моем основном проекте. Они хотят, чтобы все, что связано с WordPress, стало невидимым в админке. Пришлось посмеиваться… 😉

      • 0
    • @Майк — Ха! Итак, мне любопытно теперь узнать, что еще вы могли бы сделать, поскольку я со временем собирал вещи вместе, чтобы добиться этого. Некоторые из выдающихся вещей, которых я действительно хотел достичь, были. 1) Скрытие /wp-admin и /wp-login.php, чтобы к ним нельзя было получить доступ. 2) Создание функции автоматически изменит все назначенные классы и идентификаторы wordpress на что-то другое 3) самое важное, что я не могу понять, это как изменить get_bloginfo(‘stylesheet_directory’) и/или get_bloginfo(‘template_directory’) и другие вызовы по умолчанию для автоматического удаления wp-content/theme-name из печатного URL-адреса

      • 0
    • @NetConstructor.com — это намного сложнее, потому что они связаны с тем, как работает сайт. Сравнительно, удалить текст легко. Мне интересно, а зачем тебе это? В случае моего клиента они продают то, что я пишу, как свой продукт и думают, что наличие WordPress обесценивает его в глазах своих клиентов (что, к сожалению, вероятно, верно).

      • 0
    • @Mike — Правда, по моему опыту, некоторым компаниям, которые слышали о wordpress, говорили, что это отстой или что это плохой выбор. Хотя я должен был бы согласиться с тем, что для больших сайтов и / или тех, которые содержат множество пользовательских запросов, это правильно, в большинстве случаев я обнаружил, что WordPress более чем идеален. В любом случае… для более крупной фирмы, где я считаю, что wordpress — хороший выбор, им обычно нравится более индивидуальное решение, даже если это только косметическое средство.

      • 0
    • @mikeschinkel — Большое спасибо за ваш вклад. Я чувствую, что если я пойму это немного лучше, я смогу использовать это для достижения того, что мне нужно, без необходимости просто скрывать метабоксы через css, что я и делал. Однако я заметил, что когда я интегрирую код в свой файл functions.php, html страницы по-прежнему включает class=»metabox-prefs» вместе со всей информацией о справке. Не могли бы вы показать мне, как я могу удалить это. По сути, я не хочу упоминать о помощи визуально или в html.

      • 0
    • @NetConstructor.com : Вы видите preg_replace() ? Оберните его вывод другим preg_replace(), на этот раз нацеленным на <div class="metabox-prefs"></div> . (Я полагал, что вы знакомы с RegEx; разве это не то, что вы можете изменить самостоятельно?)

      • 0
    • @mikeschinkel — я думаю, единственное, что меня здесь смутило, это то, как вы ввели #Us в код своего ответа… Не могли бы вы кратко объяснить это?

      • 0
    • @NetConstructor.com — Хороший улов. Это модификаторы RegEx ( bit.ly/php-regex-modifiers ). Капитал "U" является «нежадным», что означает, что не пытайтесь найти закрытие </div> дальше, используйте первое, что вы получите. Нижний регистр "s" означает соответствие между возвратом каретки и переводом строки, т.е. выполнение «многострочного» совпадения. Кстати, мне пришлось разобраться с этим трудным путем; кажется, что никто (другой) нигде их не объясняет, по крайней мере, не в контексте. ХТН.

      • 0
    • @mikeschinkel — хммм… очень интересно. Первый раз слышу о его использовании. Я играл с этим, но мне трудно понять, как применить эту логику, чтобы удалить текст для метабокса «атрибуты страницы», не испортив другие теги

      , используемые там. Каков наилучший план действий? сопоставить полный текст, чтобы убедиться, что он не удаляет вещи, связанные с другими потенциальными плагинами, которые изменяют эту область? Как бы вы написали этот код? Не могли бы вы показать это, чтобы я мог узнать ваш путь?

      • 0
    • @MROSWELL — я подробно изучил файл и информацию, однако, хотя информация и примеры были очень интересными, ни одна из информации по ссылке не ответила на вопрос, на который я ищу ответ. Пожалуйста, исправьте свой ответ, если вы знаете, как это сделать.

      • 0
    • Боюсь, я привел вас только наполовину. Я продолжу обдумывать это, чтобы посмотреть, сможем ли мы приблизиться к окончательному ответу. Или, возможно, другие ответы «вернут его домой». Кстати, я сосредоточился на № 2 (и № 5) в вашем списке вопросов выше.

      • 0
    • @mroswell — я полагаю, что для пункта 2 выше он удалит все поле прямо сейчас, когда я хочу удалить только области внутри него, как указано. Что касается пункта 5… тем не менее, ссылка была чертовски интересной, спасибо, что поделились ею. Пожалуйста, дайте мне знать, когда вы найдете какую-либо дополнительную информацию!

      • 0
    • Я предполагаю, что моя идея заключалась в том, чтобы удалить исходную панель инструментов_right_now, а затем заменить ее новой панелью управления my_dashboard_right_now, за вычетом оскорбительных частей.

      • 0
    • @NetConstructor.com: я добавил пример custom_dashboard_widgets для примера right_now_no_theme…. можно было бы внести небольшие изменения, потому что таблица стилей не совсем правильная. Но работает, то есть кнопки темы больше нет.

      • 0
    • @bueltge ваш плагин работает хорошо, но это хороший ответ только для тех, кто является конечным пользователем, а не для тех, кто действительно хочет знать, как писать код. Кстати, всякий раз, когда вы предлагаете свои собственные плагины, дайте понять, что они ваши. Я уверен, что это была оплошность с вашей стороны (я знаю, что вы не спамер), но гораздо труднее привлечь спамеров к ответу, когда мы не просим всех следовать правилам. Нет ничего плохого в том, чтобы предлагать свои собственные плагины, где это применимо, но лучше, чтобы было ясно, что это ваш собственный плагин, а не одобрение третьей стороны.

      • 0
    • @Mike: да, я не спамер, но я понял вопрос вверху, чтобы пользователь искал простой способ, а не способ кодирования. Я также могу написать решение вопроса через пользовательский плагин или в теме, но я понял, что вопрос немного другой. Извините, когда ссылка на плагин является спам-комментарием.

      • 0
    • @bueltge — @NetConstuctor.com задал множество вопросов, и кажется, что он интересуется тем, как что-то программировать. Я заметил это, вы, вероятно, не так уж и плохо. Но не забудьте упомянуть, что если вы предлагаете свои собственные плагины, то они на самом деле являются вашими плагинами; это будет держать все на подъеме.

      • 0
    • Спасибо, Майк, я вспомню об этом в своем следующем комментарии. Может быть, это важно, чтобы я лучше прочитал вопрос и тренировал свой английский.

      • 0
    • @bueltge На всякий случай, пожалуйста, не принимайте это на свой счет; мы просто пытаемся немного модерировать. На протяжении многих лет вы были прекрасным участником сообщества WordPress. Также я бы хотел, чтобы мой немецкий был на 1/100 так же хорош, как ваш английский. 🙂

      • 0
  2. Вот ответ на вопрос №1. Сейчас не хватает времени, чтобы сделать все остальное.

    1.) Удаление кнопки ссылки на справку администратора

    К сожалению, WordPress не предоставляет хука, позволяющего вам воздействовать на кнопку «Справка» в правом верхнем углу панели администратора, но вы можете использовать несколько грязный хак, чтобы добиться того, чего вы пытаетесь достичь.

    Теперь вы видите это:

    Кнопка «Помощь» в панели администратора WordPress
    (источник: mikeschinkel.com )

    Теперь вы не:

    Кнопка «Помощь» удалена из административной панели WordPress
    (источник: mikeschinkel.com )

    Вызывая хуки contextual_help и admin_notices, те, которые вызываются непосредственно перед и сразу после вывода кнопки ссылки на справку, соответственно, вы можете захватить выходной буфер и удалить оскорбительный HTML с помощью preg_replace() . Пара функций ob_start() / в PHP — это то, что вам нужно для буферизации вывода, а затем для захвата этого буферизованного вывода, альт:ob_get_clean()

    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.) Удаление текста справки из метабокса атрибутов страницы

    Чтобы удалить текст справки для метабокса «Атрибуты страницы», не требуются регулярные выражения, достаточно простого 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();
    

    Есть еще один подход, который вы можете использовать, когда все, что вы хотите сделать, это удалить текст из ядра, и это использовать 'gettext' хук. Следующий код удаляет текст справки из метабокса «Атрибуты страницы»:

    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 из метода № 3, чтобы удалить текст справки из метабокса отрывка (в этот вариант я включил код из метода № 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();
    
    • 0
  3. Превосходный доклад Джейка Голдмана на 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_now’]);

    Затем добавьте свой собственный виджет, используя wp_add_dashboard_widget().

    Посмотрите в wp-admin/includes/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' );
    }
    
    
    ?>
    
    • 0
  4. Альтернативно и очень просто: используйте плагин Adminimize, у этого плагина много опций, и вы можете добавить свои собственные опции. Этот плагин мой собственный, и я буду кодировать более новый плагин с лучшим кодом. Возможно, это поможет решению csutom прочитать источник.

    • 0

Оставить ответ

You must login to add an answer.