• ДОБРО ПОЖАЛОВАТЬ В КЛУБ ПО WORDPRESS

    Мы активно растущий клуб по WordPress и нам нужна помощь каждого человека, в том числе и Ваша! Не стесняйтесь и станьте частью большого сообщества.
    Мы делимся новостями, отытом и полезными советами! Пройдите простую регистрацию, чтобы пользоваться всеми возможностями нашего клуба.

    Присоединяйтесь к нам, вам обязательно понравится - Присоединится

Вопрос Кодеры подскажите

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
Есть такой кусок кода
PHP:
public function get_header()
{
if ( $this->op( 'wfb_remove_xmlrpc' ) ) {
if ( !$this->op( "enable_app" ) && !$this->op( 'enable_xmlrpc' ) ) {
remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'rsd_link' );
}
}
if ( $this->op( 'wfb_hide_version' ) ) {
remove_action( 'wp_head', 'wp_generator' );
}
}
Нужно чтоб этот был таким же (с данным набором функций) и работал.
Где то затупил... Вариантов много перебрал но к какому то точному решению не пришел... Хотя моя конструкция вроде как и работает но есть сомнения в своих измышлениях.

PHP:
function vc_remove_wp_ver_css_js( $src ) {
if ( strpos( $src, 'ver=' ) )
$src = remove_query_arg( 'ver', $src );
return $src;
}
add_filter( 'style_loader_src', 'vc_remove_wp_ver_css_js', 9999 );
add_filter( 'script_loader_src', 'vc_remove_wp_ver_css_js', 9999 );
remove_action('wp_head', 'wp_generator');
Буду крайне признателен.
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
И следом еще вопрос, я не знаю (не копал вопрос глубоко) может кто подскажет. В WP возможно такое: первое брать из текстового файла данные и выполнять как код? И второе Брать из БД и так же выполнять код (вообще про базу я на всякий случай, тк WP и работает через БД)
Если можно то сразу покажите примеры к вопросам. (Кусок кода или отсылка к источнику примера или оба варианта)
Спасибо.
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
Так ну как обычно... ))) Сам спросил, сам отвечаю
путался путался и распутался... короче говоря весь код выкинул и сделал так
PHP:
    public function get_header()
    {
        if ( $this->op( 'wfb_remove_xmlrpc' ) ) {
            if ( !$this->op( "enable_app" ) && !$this->op( 'enable_xmlrpc' ) ) {
                remove_action( 'wp_head', 'wlwmanifest_link' );
                remove_action( 'wp_head', 'rsd_link' );
            }
        }
        if ( $this->op( 'wfb_hide_version' ) ) {
            remove_action( 'wp_head', 'wp_generator' );
        }
        if ( $this->op( 'wfb_remove_ver' ) ) {
                remove_filter('comment_text', 'make_clickable', 9);
                remove_action( 'wp_head', 'feed_links_extra', 3 );
                remove_action( 'wp_head', 'feed_links', 2 );
                remove_action( 'wp_head', 'rsd_link' );
                remove_action( 'wp_head', 'wlwmanifest_link' );
                remove_action( 'wp_head', 'index_rel_link' );
                remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 );
                remove_action( 'wp_head', 'start_post_rel_link', 10, 0 );
                remove_action( 'wp_head', 'adjacent_posts_rel_link', 10, 0 );
                remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
                remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );
                remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
                remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
                remove_action( 'wp_print_styles', 'print_emoji_styles' );
                remove_action( 'admin_print_styles', 'print_emoji_styles' );
                remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
                remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
                remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
            }
        if ( $this->op( 'wfb_hide_ver' ) ) {
            function vc_remove_wp_ver_css_js( $src ) {
                  if ( strpos( $src, 'ver=' ) )
                $src = remove_query_arg( 'ver', $src );
                return $src;
}
            add_filter( 'style_loader_src', 'vc_remove_wp_ver_css_js', 9999 );
            add_filter( 'script_loader_src', 'vc_remove_wp_ver_css_js', 9999 );
            remove_action('wp_head', 'wp_generator');
    }
    }
кратко расскажу что тут
ну понятно глобальная тема хедер... гасим xml...
объявляем bool опцию wfb_remove_xmlrpc (чтоб могли управлять ну и там далее по коду ее удаляем если вкл)
Далее объявляем wfb_remove_ver -> чистим шапку и также получаем вызов для вкл выкл
Далее объявляем wfb_hide_ver -> убираем версии CSS JS и также получаем вызов для вкл выкл

Ну вот как то так
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
Опять я... опять вопрос к кодерам может кто подскажет
Функция... ищем перечисляем
PHP:
    public function wp_dashboard_setup()
    {
        if ( $w = $this->op( 'wfb_widget' ) ) {
            global $wp_meta_boxes;
            foreach (  $wp_meta_boxes['dashboard'] as $position => $prio_boxes  ) {
                foreach (  $prio_boxes as $priority => $boxes  ) {
                    foreach (  $boxes as $key => $array  ) {
                        if ( in_array( $key, $w ) ) {
                            unset( $wp_meta_boxes['dashboard'][$position][$priority][$key] );
                        }
                    }
                }
            }
        }
    }
Выводим циклом...
PHP:
<div class="block">
    <h4><img src="<?php echo $this->get_plugin_url(); ?>/img/check.png" height="24" width="24" /><?php _e('Deactivate Dashboard Widgets', 'wp-good-hook'); ?></h4>
    <div class="block_content">
        <p><?php _e('Choose the items you want to remove.', 'wp-good-hook'); ?></p>
        <ul>
            <?php foreach ($this->widgets as $wgt => $pos): ?>
            <li>
<?php if (get_option('wfb_widget') && is_array(get_option('wfb_widget')) && in_array($wgt, get_option('wfb_widget'))): ?>
                <input id="wfb_widget_<?php echo $wgt; ?>" type="checkbox" name="wfb_widget[]" value="<?php echo $wgt; ?>" checked="checked" />
<?php else: ?>
                <input id="wfb_widget_<?php echo $wgt; ?>" type="checkbox" name="wfb_widget[]" value="<?php echo $wgt; ?>" />
<?php endif; ?>
                <label for="wfb_widget_<?php echo $wgt; ?>"><?php _e($pos['title']); ?></label>
            </li>
            <?php endforeach; ?>
        </ul>
    </div>
</div>
задача такая вот это перечислить и загнать в вывод
PHP:
function remove_menus(){
    global $user;
if(!current_user_can('administrator') )
{
    remove_menu_page( 'index.php' );                  //Консоль
    //remove_menu_page( 'upload.php' );                 //Медиафайлы
    remove_menu_page( 'edit.php?post_type=page' );    //Страницы
    //remove_menu_page( 'edit-comments.php' );          //Комментарии
    remove_menu_page( 'themes.php' );                 //Внешний вид
    remove_menu_page( 'plugins.php' );                //Плагины
    remove_menu_page( 'users.php' );                  //Пользователи
    remove_menu_page( 'tools.php' );                  //Инструменты
    remove_menu_page( 'options-general.php' );        //Параметры
    remove_menu_page('wpseo_dashboard');
     
}
}
add_action( 'admin_menu', 'remove_menus' );
где то затупил... не выводит. или выводит не так или не то
накидать помогите правильно
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
Входит в плохую привычку ))) сам отвечаю...
добавил такую схему:
PHP:
private $menu = array(
        "__('Dashboard')" => array(
        'position' => 'normal',
        'title' => 'Консоль'),
        "__('Posts')" => array(
        'position' => 'normal',
        'title' => 'Записи'),
        "__('Media')" => array(
        'position' => 'normal',
        'title' => 'Медиа файлы'),
        "__('Links')" => array(
        'position' => 'normal',
        'title' => 'Ссылки'),
        "__('Pages')" => array('position' => 'normal',
        'title' => 'Страницы'),
        "__('Appearance')" => array(
        'position' => 'normal',
        'title' => 'Внешний вид'),
        "__('Tools')" => array(
        'position' => 'normal',
        'title' => 'Инструменты'),
        "__('Users')" => array(
        'position' => 'normal',
        'title' => 'Пользователи'),
        "__('Settings')" => array(
        'position' => 'normal',
        'title' => 'Настройки'),
        "__('Comments')" => array(
        'position' => 'normal',
        'title' => 'Комментарии'),
        "__('Plugins')"=>array(
        'position' => 'normal',
        'title' => 'Плагины')
        );
список выводится, осталось повесить обработчик.
Вот как то так
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
И так опять где то затормозил...
стандартная функция чтоб удалить пункты меню...
PHP:
function remove_menus(){
    global $menu;
    $restricted = array(
        __('Dashboard'),
        __('Posts'),
        __('Media'),
        __('Links'),
        __('Pages'),
        __('Appearance'),
        __('Tools'),
        __('Users'),
        __('Settings'),
        __('Comments'),
        __('Plugins')
    );
    end ($menu);
    while (prev($menu)){
        $value = explode(' ', $menu[key($menu)][0]);
        if( in_array( ($value[0] != NULL ? $value[0] : "") , $restricted ) ){
            unset($menu[key($menu)]);
        }
    }
}
у себя сделал так перечислил...
PHP:
private $menu = array(
        "remove_menu_page( 'index.php' );" => array(
        'position' => 'normal',
        'title' => 'Консоль'),
        "__('Posts')" => array(
        'position' => 'normal',
        'title' => 'Записи'),
        "__('Media')" => array(
        'position' => 'normal',
        'title' => 'Медиа файлы'),
        "__('Links')" => array(
        'position' => 'normal',
        'title' => 'Ссылки'),
        "__('Pages')" => array(
        'position' => 'normal',
        'title' => 'Страницы'),
        "__('Appearance')" => array(
        'position' => 'normal',
        'title' => 'Внешний вид'),
        "__('Tools')" => array(
        'position' => 'normal',
        'title' => 'Инструменты'),
        "__('Users')" => array(
        'position' => 'normal',
        'title' => 'Пользователи'),
        "__('Settings')" => array(
        'position' => 'normal',
        'title' => 'Настройки'),
        "__('Comments')" => array(
        'position' => 'normal',
        'title' => 'Комментарии'),
        "__('Plugins')"=>array(
        'position' => 'normal',
        'title' => 'Плагины')
        );
Загнал в цикл и вывел на страницу
PHP:
<div class="block">
    <h4><img src="<?php echo $this->get_plugin_url(); ?>/img/check.png" height="24" width="24" /><?php _e('Удаляем меню в админке для пользователей', 'wp-good-hook'); ?></h4>
    <div class="block_content">
        <p> <?php _e('Удаляем меню в админке для пользователей.', 'wp-good-hook'); ?></p>
        <ul>
            <?php foreach ($this->menu as $md => $pos): ?>
            <li>
<?php if (get_option('wfb_menu') && is_array(get_option('wfb_menu')) && in_array($md, get_option('wfb_menu'))): ?>
                <input id="wfb_menu_<?php echo $md; ?>" type="checkbox" name="wfb_menu[]" value="<?php echo $md; ?>" checked="checked" />
<?php else: ?>
                <input id="wfb_menu_<?php echo $md; ?>" type="checkbox" name="wfb_menu[]" value="<?php echo $md; ?>" />
<?php endif; ?>
                <label for="wfb_menu_<?php echo $md; ?>"><?php _e($pos['title']); ?></label>
            </li>
            <?php endforeach; ?>
        </ul>
    </div>
</div>
а вот обработчик функции не срабатывает... где то что то не правильно сделал.
подскажите

PHP:
    public function remove_menus(){
        if ( $m=$this->op( 'wfb_menu' ) ){
            global $menu;
                foreach ($menu['__'] as $position => $prio_boxes){
                    foreach (  $prio_boxes as $priority => $boxes  ) {
                        foreach ($boxes as $key => $array){
                            if (in_array($key, $m)){
                                unset($menu['__'][$position][$priority][$key]);
                        }
                    }
                }
            }
        }
    }
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
Ну как повелось...
Отвечаю сам
и так:
Перечислил
PHP:
private $menu = array(
        'index.php' => array('title' => 'Консоль'),
        'edit.php?post_type=page' => array('title' => 'Записи'),
        'upload.php' => array('title' => 'Медиа файлы'),
        );
Загнал в цикл и вывел:
PHP:
<div class="block">
    <h4><img src="<?php echo $this->get_plugin_url(); ?>/img/check.png" height="24" width="24" /><?php _e('Удаляем меню в админке для пользователей', 'wp-good-hook'); ?></h4>
    <div class="block_content">
        <p> <?php _e('Удаляем меню в админке для пользователей.', 'wp-good-hook'); ?></p>
        <ul>
            <?php foreach ($this->menu as $md => $pos): ?>
            <li>
<?php if (get_option('wfb_menu') && is_array(get_option('wfb_menu')) && in_array($md, get_option('wfb_menu'))): ?>
                <input id="wfb_menu_<?php echo $md; ?>" type="checkbox" name="wfb_menu[]" value="<?php echo $md; ?>" checked="checked" />
<?php else: ?>
                <input id="wfb_menu_<?php echo $md; ?>" type="checkbox" name="wfb_menu[]" value="<?php echo $md; ?>" />
<?php endif; ?>
                <label for="wfb_menu_<?php echo $md; ?>"><?php _e($pos['title']); ?></label>
            </li>
            <?php endforeach; ?>
        </ul>
    </div>
</div>
Сделал функцию
PHP:
    public function remove_menus(){
        if ( $menu=$this->op( 'wfb_menu' ) ){
            if ( $menu && is_array( $menu ) ) {
            foreach ( $menu as $md ) {
                remove_menu_page($menu);
                }
        }
    }
}
все бы хорошо, но есть пара недоработок...
сижу пыхчу... вроде все просто но где то торможу... (с 2009г не садился за PHP)
Суть проблемы, есть строка (выше)
remove_menu_page($menu);
и есть массив в нем такая строка 'index.php' => array('title' => 'Консоль'),
так вот суть затупа строка должна быть такой на выходе
remove_menu_page('index.php');
а получается remove_menu_page index.php;
не хватает (' ') если их вставить то нескладухи в коде
 

Топ поддержки


Сверху