Задать вопрос
  • Как сделать модальное окно Wordpress на своей верстке?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    это через WP или нужен чистый CSS/JS?

    что вы подразумеваете под реализацией через WP?
    Если нужны плагины, то вот:
    Popup Maker, Easy Modal

    Если тема на бустрапе, то тут подсказывать даже нечего.
    Также можно подключить любую jQuery библиотеку для модалок и т.д.
    Ответ написан
  • Почему так происходит с картинками?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Могу предположить следующее...
    the_post_thumbnail(array(100,100))
    такая пропорция картинки (1:1) имеется. Миниатюра - thumbnail размером 150х150.
    src="http://localhost:8089/wp-content/uploads/2020/02/robot-wallpaper-17-150x150.jpg"


    А вот, такая пропорция картинки (2:1)
    the_post_thumbnail(array(200,100))
    не имеется и соответственно, ВП нечего выводить...
    Почему и получается следующее:
    width="178" height="100" src="http://localhost:8089/wp-content/uploads/2020/02/robot-wallpaper-17.jpg"

    Он выводит полный размер картинки и стилями ограничивает его...

    Чтобы решить проблему:
    1)
    add_image_size( 'customThumbnail', 200, 100, true );
    в functions.php
    https://wp-kama.ru/function/add_image_size
    2) Установить regenerate thumbnails и прогнать все ваши картинки. Тогда будет создан новый размер миниатюр 200х100 пикс. и ВП использует их. Или же потом сможете в the_post_thumbnail сможете явно указать нужную миниатюру. the_post_thumbnail('customThumbnail')
    https://wp-kama.ru/function/the_post_thumbnail
    Ответ написан
    Комментировать
  • Ошибки: REST API выдал ошибку, Ваш сайт не смог выполнить петлевой запрос на одном из хостингов при одинаковом сайте, как исправить?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    1) проблема с хостингом
    2) исключите CORS, раз у вас по https не работает, а по http работает. Может быть вы статику отдаете через http из-за чего возникает CORS в https версии
    Для начала исключите это.
    Ответ написан
    Комментировать
  • Как сделать имитацию платежной системы?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Соглашусь с коллегами. Однозначно есть некий тестовый аккаунт для проверки. Иногда они предоставляют не только ключ к АПИ, но и левые кредитные карты, чтобы имитировать оплату.
    Может быть, что у них в документации не написано. Свяжитесь с поддержкой
    Ответ написан
    Комментировать
  • Почему изображения отображаются только после перезагрузки Intelij Idea?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    Здравствуйте!
    Вам не нужно перезапускать саму программу.
    Поступите следующим образом:

    После того, как добавите новую статику или внесете изменения в ваш проект, то для того, чтобы увидеть изменения сделайте Build project (ctrl + F9) или Rebuild Project.

    Чтобы самому не заморачиваться каждый раз нажимая на кнопку build / rebuild включите авто сборку.
    Для этого следуйте указаниям:
    1)
    SHIFT+Ctrl+A ->registry-> compiler.automake.allow.when.app.running

    2)
    file->settings->build,execution,deployment. Go to ->compiler->build project automatically.

    3) Добавьте расширение для браузера LiveReload.
    Тогда после внесения правок каждый раз будет происходить авто сборка
    https://stackoverflow.com/questions/33869606/intel...
    Ответ написан
  • Как сделать вот такую вещь на страницу как картинке в вордпрессе?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    В чем именно заключается проблема?
    Что пробовали сделать и не получилось?

    Как сделать вот такую вещь на страницу

    Если к вашей теме подключен bootstrap, то создайте 4 колонки
    Внутри кажой из колонок создайте блок и вставьте в них кнопки. А дальше просто стилизуйте.

    Если у вас не бутстрапа, то можете использовать flexbox, подключить другие css фреймворки, CSS Grid и многое другое.
    Ответ написан
  • Почему в Spring Security не работает accessDaniedHandler?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    accessDeniedHandler срабатывает только если я зологинился и пытаюсь зайти на существующую запрещенную страницу. Почему он не срабатывает если я разлогиненый и пытаюсь зайти на существующую запрещенную страницу и перекидывает на страницу логина?


    Вы сами ответили на свой же вопрос. Проходя по цепочке он сперва натыкается на проблему авторизации и выдает исключение Access Denied Exception.
    Т.е. сперва он проверяет antMatchers и видит, что запрошенный URl не указан вpermitAll(), проходя дальше по цепочке он натыкается на .anyRequest().authenticated() и отдает Access Denied Exception.

    К тому же у вас строка /error закомментирована. Возможно, что он пытается показать ошибку, но так как эта страница недоступна будучи неавторизованным, то сперва перекидывает на страницу авторизации...

    Попробуйте расскомментировать эту строку и проверьте работает ли.
    Если нет, то попробуйте создать такой контроллер:

    @Controller
    public class HttpErrorController implements ErrorController {
    
        private final MessageSource messageSource;
    
        @Autowired
        public HttpErrorController(MessageSource messageSource) {
            this.messageSource = messageSource;
        }
    
        @RequestMapping("/error")
        public String handleError(
                Locale locale,
                Model model,
                HttpServletRequest request,
                Exception ex
        ) {
    
            Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
    
            if (status != null) {
    
                int statusCode = Integer.valueOf(status.toString());
    
                Map<String, String> metaData = new HashMap<>();
    
                // 403
                if (statusCode == HttpStatus.FORBIDDEN.value()) {
    
                    //do somthing
                }
    
                // 404
                else if (statusCode == HttpStatus.NOT_FOUND.value()) {
                    //do somthing
                }
    
                // 405
                else if (statusCode == HttpStatus.NOT_FOUND.value()) {
                    //do somthing
                }
    
                // 500
                else if (statusCode == HttpStatus.INTERNAL_SERVER_ERROR.value()) {
                    //do somthing
                }
    
            }
    
    
            return "errors/httperrors";
        }
    
        @Override
        public String getErrorPath() {
            return "/error";
        }
    
    }
    Ответ написан
  • Как соединить базу данных товаров с базой поставщиков в Woocommerce?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Я обычно, это все делаю на уровне REST API Woocommerce, а не через плагин WP All Import.
    Сооответственно, изучите
    https://woocommerce.github.io/woocommerce-rest-api...
    Ответ написан
    Комментировать
  • Почему не работает почта?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Возможные проблемы:
    1) Возможно, что сайт был перенесен некорректно. Посмотрите на наличие js ошибок в консоли браузера. Также убедитесь, что все скрипты и стили сайта загружаются корректно (исключите CORS)
    2) Возможно, что хостер, на котором сайт располагается блокирует порт. Соответственно, напишите провайдеру и пусть, сам разбирается.
    3) Иногда проблемы возникают при некорректном подключении SSL сертификата. Исключите эту проблему тоже.
    Для начала можете исключить вышеуказанные проблемы.
    Ответ написан
    Комментировать
  • Как перевести Woocommerce Admin?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    В какую папку поставили и как переводили?
    Залить нужно в папку languages плагина или же в папку wp-content/languages
    Переводить нужно pot или po файл используя poedit. Также файл должен быть корректно назван
    Ответ написан
  • Как сделать логин для админа в Spring Security?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    Здравствуйте!
    Я реализовал это следующим образом:
    В данном случае у меня 2 кастомные формы входа:
    1) для админ панели /admin/login
    2) для пользователей /auth
    /**
     * Конфигурация для Spring Security
     */
    @Configuration
    @EnableWebSecurity
    @EnableGlobalMethodSecurity(prePostEnabled = true)
    public class WebSecurityConfig {
    
        private static UserDetailsServiceImpl userDetailsService;
    
        @Autowired
        private UserDetailsServiceImpl userDetailsServiceImpl;
    
        @PostConstruct
        private void init() {
            userDetailsService = this.userDetailsServiceImpl;
        }
    
        @Bean
        public static PasswordEncoder passwordEncoder() {
            return new BCryptPasswordEncoder();
        }
    
        @Bean
        public DaoAuthenticationProvider authProvider() {
            CustomAuthenticationProvider authProvider = new CustomAuthenticationProvider();
            authProvider.setUserDetailsService(userDetailsService);
            authProvider.setPasswordEncoder(passwordEncoder());
            return authProvider;
        }
    
        // Конфигурация для backend
        @Configuration
        @Order(1)
        public static class BackendConfigurationAdapter extends WebSecurityConfigurerAdapter {
    
    
            @Autowired
            private CustomWebAuthenticationDetailsSource authenticationDetailsSource;
    
            public BackendConfigurationAdapter() {
                super();
            }
    
            @Override
            protected void configure(HttpSecurity http) throws Exception {
    
                http
                        .antMatcher("/admin/**")
                        .antMatcher("/admin/**/**")
                        .authorizeRequests()
                        .anyRequest()
                        .hasAuthority("ADMIN_PRIVILEGE")
                        /*.hasAuthority("ADMIN")*/
    
    
                        .and()
                            .formLogin()
                            .authenticationDetailsSource(authenticationDetailsSource)
                            .loginPage("/admin/login")
                            .loginProcessingUrl("/admin/login")
                            .usernameParameter("email")
                            .passwordParameter("password")
                            .defaultSuccessUrl("/admin/dashboard")
                            .failureUrl("/admin/login?authError")
                            .permitAll()
    
                        .and()
                            .rememberMe()
                            .rememberMeParameter("remember-me")
                            .tokenValiditySeconds(86400)
    
                        .and()
                            .logout()
                            .logoutRequestMatcher(new AntPathRequestMatcher("/admin/logout"))
                            .logoutSuccessUrl("/admin/login")
                            .deleteCookies("JSESSIONID")
    
                        .and()
                            .exceptionHandling()
                            .accessDeniedPage("/403")
    
                        .and()
                            .csrf()
                            .ignoringAntMatchers("/admin/**");
            }
    
            @Override
            public void configure(WebSecurity web) {
                web.ignoring().antMatchers(
    
                        // статика backend
                        "/backend/css/**",
                        "/backend/js/**",
                        "/backend/fonts/**",
                        "/backend/images/**",
                        "/backend/init/**"
    
                );
            }
    
    
            @Override
            protected void configure(AuthenticationManagerBuilder auth) throws Exception {
                auth.userDetailsService(userDetailsService);
            }
    
        }
    
    
        // Конфигурация для frontend (Обычная авторизация и авторизация oauth2)
        @Configuration
        @Order(2)
        public static class FrontendConfigurationAdapter extends WebSecurityConfigurerAdapter {
    
            @Autowired
            private CustomWebAuthenticationDetailsSource authenticationDetailsSource;
    
            public FrontendConfigurationAdapter() {
                super();
            }
    
            protected void configure(HttpSecurity http) throws Exception {
    
                http
                        .authorizeRequests().mvcMatchers("/robots.txt").permitAll()
                        .antMatchers(
                                "/", "/auth", "/signup", "/restore", "/activation/**",
                                "/admin/login", "/admin_restore",
                                "/attachments/get/**",
                                "/sendMessage",
                                "/error",
                                "/page/**",
                                "/categories", "/categories/**",
                                "/terms/**", "/posts", "/posts/**"
                        ).permitAll()
                        .anyRequest().authenticated()
    
                        .and()
                            .formLogin()
                            .authenticationDetailsSource(authenticationDetailsSource)
                            .loginPage("/auth")
                            .loginProcessingUrl("/auth")
                            .usernameParameter("email")
                            .passwordParameter("password")
                            .defaultSuccessUrl("/")
                            .failureUrl("/auth?authError")
                            .permitAll()
    
                        .and()
                            .rememberMe()
                            .rememberMeParameter("remember-me")
                            .tokenValiditySeconds(86400)
    
                        .and()
                            .oauth2Login().defaultSuccessUrl("/")
    
                        .and()
                            .logout()
                            .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
                            .logoutSuccessUrl("/")
                            .deleteCookies("JSESSIONID")
    
                        .and()
                            .exceptionHandling()
                            .accessDeniedPage("/403")
    
                        .and()
                            .csrf()
    
                        .and()
                            .sessionManagement()
                            .sessionCreationPolicy(SessionCreationPolicy.ALWAYS)
    
                        .and()
                            .headers().frameOptions().sameOrigin();
                        
    
            }
    
            @Override
            public void configure(WebSecurity web) {
                web.ignoring().antMatchers(
                        "/frontend/css/**",
                        "/frontend/js/**",
                        "/frontend/fonts/**",
                        "/frontend/images/**",
                        "/frontend/lib/**",
                        "/frontend/vendor/**"
                );
            }
    
            @Override
            protected void configure(AuthenticationManagerBuilder auth) throws Exception {
                auth.userDetailsService(userDetailsService);
            }
    
    
        }
    
    }


    Админа, как по мне, лучше создать при инициализации приложения. Вот, код, как это делаю я.

    @Component
    public class InitData implements CommandLineRunner {
    
    @Override
    public void run(String... args) throws Exception {
    if (userServiceImpl.usersCount() == 0)
                initUsers();
    }
    
    private void initUsers() {
    // создаем пользователей
    }
    }
    Ответ написан
    3 комментария
  • Как с помощью recent_products вывести товары из категории?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    https://docs.woocommerce.com/document/woocommerce-...
    Используйте шорткод [products] с нужными параметрами
    Ответ написан
    Комментировать
  • Где искать php-файлы страниц сайта?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Они формируются шаблонами динамически. Посмотрите на иерархию шаблонов, чтобы понять какой шаблон за что отвечает
    https://developer.wordpress.org/themes/basics/temp...

    Можете воспользоваться плагином Query Monitor, чтобы найти шаблон для текущей страницы.
    А содержимое страниц хранится в БД
    Ответ написан
    Комментировать
  • Upload war файла в TomCat, при попытке доступа ошибка 404?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Пробовали ли вы перезапустить приложение после того, как залили war'ник ?
    Также обязательно просмотрите логи сервера.
    Исключили ли вы ошибки связанные с contextPath? Например, если у вас ссылка в шаблон добавлена хардкодом href="/contact" , то при наличии context может не работать. И соответственно, например, через thymeleaf надо добавлять как th:href="@{/contact}"
    Причины 404 могут быть разные...
    Ответ написан
    Комментировать
  • Как сделать такую контактную форму?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Конечно же есть.

    Основа - contact form 7
    https://ru.wordpress.org/plugins/contact-form-7/

    Дополнение - contact form 7 conditional fields
    https://ru.wordpress.org/plugins/cf7-conditional-f...
    Ответ написан
    Комментировать
  • Как изменить надпись "Показать все n Результаты" с каталога товаров woocommerce?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    wp-content/themes/yourtheme/woocommerce/.
    Обычно по такому пути располагаются кастомизированные шаблоны вукомерца. Если директории woocommerce у вас нет, то ее нужно создать. А дальше копируете нужные шаблоны из папки плагина wooocmmerce/templates
    Что касается смены надписи, то скорее всего сменить ее нужно на уровне файла перевода. Ищите pot или po файл плагина Woocommerce или вашей темы в папке languages
    Ответ написан
    1 комментарий
  • Как сделать товары на главной?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    У Woocommerce есть шорткоды для вывода товаров на любой странице.
    Также если вы используете виз. редакторы (например, Visual Composer), то вам доступны виджеты, которые выводят товары.
    https://docs.woocommerce.com/document/woocommerce-...
    Обратите внимание на шорткод [products]
    Ответ написан
  • Как полностью снести плагин WordPress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Полностью согласен с предыдущим ответом. В норме, плагин должен сам подчищать свои хвосты.
    Откройте БД и поищите таблицы схожие с названием плагина и удалите их.
    Ответ написан
    Комментировать
  • Не могу убрать блоки в мобильной версии?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Остаётся пустота, так как просто скрываю содержимое.

    Вам нужно при помощи медиа-запросов не только скрыть блоки (display none), но и для оставшегося блока задать 100% ширину, чтобы в моб. версии отображался полностью. Тогда не будет пустоты
    Ответ написан