{"id":8875,"date":"2022-12-21T21:18:51","date_gmt":"2022-12-21T21:18:51","guid":{"rendered":"https:\/\/i-wp-dev.com\/?p=8875"},"modified":"2022-12-28T22:27:34","modified_gmt":"2022-12-28T22:27:34","slug":"okruzhenie-dlya-razrabotki-docker-composer-psr-4-wp","status":"publish","type":"post","link":"https:\/\/i-wp-dev.com\/ru\/okruzhenie-dlya-razrabotki-docker-composer-psr-4-wp\/","title":{"rendered":"\u041e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Docker, Composer, PSR-4, WP"},"content":{"rendered":"\n

\u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u043d\u0430\u0447\u0430\u043b \u0432\u0435\u0441\u0442\u0438 \u0441\u0432\u043e\u0439 YouTube \u043a\u0430\u043d\u0430\u043b \u0438 \u0441\u0435\u0440\u0438\u044e \u0432\u0438\u0434\u0435\u043e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0434\u043b\u044f WordPress.<\/p>\n\n\n\n

\u0427\u0442\u043e \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u0448 \u043f\u043b\u0430\u0433\u0438\u043d?<\/p>\n\n\n\n

\u041e\u043d \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0446\u0435\u043b\u044b\u0439 \u0434\u0438\u043b\u0435\u0440\u0441\u043a\u0438\u0439 \u0446\u0435\u043d\u0442\u0440 \u043f\u043e \u043f\u0440\u043e\u0434\u0430\u0436\u0435 \u0430\u0432\u0442\u043e.<\/p>\n\n\n\n

\u041f\u0435\u0440\u0432\u043e\u0435 \u0432\u0438\u0434\u0435\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e \u0442\u043e\u043c \u043a\u0430\u043a \u044f \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n\n\n\n

\u0418 \u0442\u0430\u043a \u043d\u0430\u0447\u043d\u0435\u043c!<\/p>\n\n\n\n

\u041f\u0435\u0440\u0432\u043e\u0435 \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0439\u0442\u0438 \u043d\u0430 \u0441\u0430\u0439\u0442 https:\/\/www.docker.com\/<\/a> \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0432\u043e\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440.<\/p>\n\n\n\n

\u0414\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0448\u0430\u0433\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Composer \u043e\u043d \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u043d\u0430\u0448\u0438\u0445 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043f\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 PSR-4 (\u043e \u044d\u0442\u043e\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u0443\u0442 https:\/\/www.php-fig.org\/psr\/psr-4\/<\/a> ).<\/p>\n\n\n\n

\u0427\u0442\u043e \u0431\u044b \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Composer \u0441\u043b\u0435\u0434\u0443\u0439\u0442\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435 https:\/\/getcomposer.org\/doc\/00-intro.md \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430.<\/p>\n\n\n\n

\u0418 \u0442\u0430\u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 Docker image   https:\/\/github.com\/wodby\/docker4wordpress<\/a><\/p>\n\n\n\n

\u0423 \u0432\u0430\u0441 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441 \u043d\u0438\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u043e\u043d \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 Mac OS \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0435\u0433\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0441\u043b\u0438 \u0432\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0439\u0442\u0435 \u043c\u043e\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435 https:\/\/gitlab.com\/AlsconWeb\/wordpress-dev-environment-docker<\/a><\/p>\n\n\n\n

\u0418 \u0442\u0430\u043a \u0432\u0441\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043a \u0441\u0442\u0430\u0440\u0442\u0443 \u0443\u0436\u0435 \u043f\u043e\u0437\u0430\u0434\u0438 \u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c!<\/p>\n\n\n\n

\u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043f\u0430\u043f\u043a\u0443 \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e car-listing<\/strong> \u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0442\u0443\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u0441 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0432\u044b\u0448\u0435<\/p>\n\n\n\n

    \n
  1. .env<\/li>\n\n\n\n
  2. docker.mk<\/li>\n\n\n\n
  3. docker-compose.yml<\/li>\n\n\n\n
  4. Makefile<\/li>\n\n\n\n
  5. docker<\/li>\n<\/ol>\n\n\n\n

    \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c .env<\/strong><\/p>\n\n\n\n

    \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b<\/p>\n\n\n\n

    PROJECT_NAME \/\/ \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0438\u043c\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u0434\u043e\u043a\u0435\u0440\u0435 \nPROJECT_BASE_URL \/\/ Url \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430\u0448 \u0441\u0430\u0439\u0442 \u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 carlisting.docker.localhost\n\nDB_NAME \/\/ \u0438\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 (\u042f \u0434\u0435\u043b\u0430\u044e \u0435\u0435 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430)\nDB_USER \/\/ \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 (\u042f \u0434\u0435\u043b\u0430\u044e \u0435\u0435 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430)\nDB_PASSWORD \/\/ \u043f\u0430\u0440\u043e\u043b\u044c \u043a \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 (\u042f \u0434\u0435\u043b\u0430\u044e \u0435\u0435 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430)\n<\/code><\/pre>\n\n\n\n

    \u0422\u0430\u043a \u0436\u0435 \u044f \u043c\u0435\u043d\u044f\u044e \u0432\u0435\u0440\u0441\u0438\u044e PHP \u0441 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 7.4 \u043d\u0430 8.0<\/strong><\/p>\n\n\n\n

    PHP_TAG=8.0-dev-macos-4.22.2<\/code><\/pre>\n\n\n\n

    \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u044d\u0442\u0443 \u043f\u0430\u043f\u043a\u0443 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 make<\/strong>  \u0438 \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u043a\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u0432\u0441\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f<\/p>\n\n\n\n

    \u0414\u0430\u043b\u044c\u0448\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c WP \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 make wp core download<\/strong> \u2013 \u044d\u0442\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 wp-cli \u043d\u043e \u043d\u0430\u043c \u0435\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 make \u0447\u0442\u043e \u0431\u044b \u0434\u043e\u043a\u0435\u0440 \u043f\u043e\u043d\u0438\u043c\u0430\u043b \u0447\u0442\u043e \u043e\u0431\u0440\u0430\u0437 \u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c.<\/p>\n\n\n\n

    \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0438 \u0436\u0434\u0435\u043c \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f.<\/p>\n\n\n\n

    \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u043f\u0430\u043f\u043a\u0443 app \u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 wp-config-sampel.php \u043d\u0430 wp-config.php<\/strong><\/p>\n\n\n\n

    \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u043d\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435  <\/p>\n\n\n\n

    \u0418 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u044b \u043a \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435  .env <\/strong><\/p>\n\n\n\n

    \u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c<\/p>\n\n\n\n

    define( 'DB_HOST', 'localhost' );<\/code><\/pre>\n\n\n\n

    \u043d\u0430<\/p>\n\n\n\n

    define( 'DB_HOST', 'mariadb' ); \/\/ 'mariadb' \u042d\u0442\u043e \u0438\u043c\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0434\u043e\u043a\u0435\u0440<\/code><\/pre>\n\n\n\n
    \u0414\u0430\u043b\u044c\u0448\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043a\u043b\u044e\u0447\u0438 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u0430 https:\/\/api.wordpress.org\/secret-key\/1.1\/salt\/<\/a>\n\u0418 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u0445 \u0434\u0430\u043b\u044c\u0448\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 WordPress\n\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0432 \u043f\u0430\u043f\u043a\u0435 \/wp-content\/plugins<\/strong> \u044f \u0435\u0435 \u043d\u0430\u0437\u0432\u0430\u043b ease-car-listing<\/strong>. <\/pre>\n\n\n\n

    \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Composer<\/h3>\n\n\n\n
    \u0418 \u0442\u0430\u043a \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448 composer \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e  \u043c\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 composer init<\/strong> \u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u043c \u0438\u043b\u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0432\u0441\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d \u043d\u0430\u043c \u0437\u0430\u0434\u0430\u0435\u0442. 

    \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0443 \u043d\u0430\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0444\u0430\u0439\u043b composer.json<\/strong>

    \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u043d\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0443\u0436\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e <\/pre>\n\n\n\n
    \"description\": \"Ease car listing for your site\",\n\"license\": \"GPL-2.0-only\",\n<\/code><\/pre>\n\n\n\n

    \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438 \u0432\u0438\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438<\/p>\n\n\n\n

    \"homepage\": \"https:\/\/i-wp-dev.com\/\", - \u0434\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u0430\u043a\u0435\u0442\u0430
    \n\"type\": \"wordpress-plugin\", - \u0442\u0438\u043f \u043f\u0430\u043a\u0435\u0442\u0430 (\u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043f\u043b\u0430\u0433\u0438\u043d) \u0438\u043b\u0438 wordpress-theme \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u0442\u0435\u043c\u0430
    \n\"support\": {
    \n    \"issues\":
    https:\/\/i-wp-dev.com\/<\/a> - \u0443\u0440\u043b \u0433\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f
    \n},
    \n\"prefer-stable\": true,
    \n\"config\": { - \u0433\u043e\u0432\u043e\u0440\u0438\u0442 composer \u043d\u0430 \u043a\u0430\u043a\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 PHP \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442
    \n    \"platform\": {
    \n        \"php\": \"7.4\"
    \n    }
    \n},<\/code><\/pre>\n\n\n\n

    \u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/p>\n\n\n\n

    \"autoload\": {\n\n    \"psr-4\": {\n\n        \"Iwpdev\\\\EaseCarListing\\\\\": \"src\/php\" \/\/ \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0447\u0442\u043e \u0432\u0441\u0435 \u043d\u0430\u0448\u0438 \u043a\u043b\u0430\u0441\u0441\u044b \u0431\u0443\u0434\u0443\u0442 \u043b\u0435\u0436\u0430\u0442\u044c \u0432 \u043f\u0430\u043f\u043a\u0435 src\/php\n\n    }\n\n},<\/code><\/pre>\n\n\n\n

    \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u044f \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u0442\u0430\u0432\u043b\u044e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 dev<\/strong><\/p>\n\n\n\n

    \"minimum-stability\": \"dev\",<\/code><\/pre>\n\n\n\n

    \u0414\u0430\u043b\u044c\u0448\u0435 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b PHP_CodeSniffer<\/strong><\/p>\n\n\n\n

    \"require-dev\": {
    \n    \"roave\/security-advisories\": \"dev-latest\",
    \n    \"squizlabs\/php_codesniffer\": \"^3.6\",
    \n    \"phpcompatibility\/php-compatibility\": \"^9.3\",
    \n    \"phpcompatibility\/phpcompatibility-wp\": \"^2.1\",
    \n    \"wp-coding-standards\/wpcs\": \"^2.3\",
    \n    \"php-coveralls\/php-coveralls\": \"^2.4\"
    \n}<\/code><\/pre>\n\n\n\n

    \u0412\u043e\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 composer.json<\/strong><\/p>\n\n\n\n

    {
    \"name\": \"iwpdev\/ease-car-listing\",
    \"description\": \"Ease car listing for your site\",
    \"license\": \"GPL-2.0-only\",
    \"keywords\": [
    \"ease\",
    \"car\",
    \"listing\",
    \"car listing\",
    \"ease car listing\",
    \"ukrane product\"
    ],
    \"homepage\": \"https:\/\/i-wp-dev.com\/\",
    \"type\": \"wordpress-plugin\",
    \"support\": {
    \"issues\": \"https:\/\/i-wp-dev.com\/\"
    },
    \"prefer-stable\": true,
    \"config\": {
    \"platform\": {
    \"php\": \"7.4\"
    }
    },
    \"autoload\": {
    \"psr-4\": {
    \"Iwpdev\\\\EaseCarListing\\\\\": \"src\/php\"
    }
    },
    \"authors\": [
    {
    \"name\": \"iwpdev\",
    \"email\": \"iwpdev@outlook.com\"
    }
    ],
    \"minimum-stability\": \"dev\",
    \"require\": {
    \"htmlburger\/carbon-fields\": \"^3.3\"
    },
    \"require-dev\": {
    \"roave\/security-advisories\": \"dev-latest\",
    \"squizlabs\/php_codesniffer\": \"^3.6\",
    \"phpcompatibility\/php-compatibility\": \"^9.3\",
    \"phpcompatibility\/phpcompatibility-wp\": \"^2.1\",
    \"wp-coding-standards\/wpcs\": \"^2.3\",
    \"php-coveralls\/php-coveralls\": \"^2.4\"
    }
    }<\/pre>\n\n\n\n

    \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 composer update<\/p>\n\n\n\n

    \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 PHP Storm<\/h3>\n\n\n\n

    \u0414\u0430\u043b\u044c\u0448\u0435 \u043c\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c PHP_CodeSniffer<\/strong>, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 PHP Storm  \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 Preferences | PHP | Quality Tools<\/strong> \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u043c  PHP_CodeSniffer<\/strong> \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043d\u0430 \u0442\u0440\u043e\u0435\u0442\u043e\u0447\u0438\u0435 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445  PHP_CodeSniffer<\/strong> path \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u043a\u043e\u0442\u0440\u044b\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f  \/vendor\/bin\/phpcs<\/strong> (\u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 Windows \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0444\u0430\u0439\u043b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 bat )<\/p>\n\n\n\n

    \u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c  \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u0432\u0430\u043b\u0435\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u0430\u043a \u043d\u0430 \u043c\u043e\u0435\u043c \u0441\u043a\u0440\u0438\u043d\u0435<\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n
    \"\"<\/figure>\n\n\n\n

    \u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0448\u0430\u0433\u0443.<\/p>\n\n\n\n

    \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0437\u0430 \u0430\u0432\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435. \u041e\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0447\u0443\u0442\u044c \u043d\u0438\u0436\u0435 \u0432 \u043f\u043e\u043b\u0435 Path to phpcbf<\/strong> \u0438 \u043c\u044b \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0432 \u0442\u043e\u0439 \u0436\u0435 \u043a\u0430\u043f\u043a\u0435 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b<\/p>\n\n\n\n

    \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043a\u043e\u0434 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442.<\/p>\n\n\n\n

    \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043c\u043e\u0439 \u0434\u0440\u0443\u0433 \u0438 \u044d\u0442\u043e\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043c\u043d\u043e\u0433\u0438\u0445 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0441\u0442\u0443\u0434\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0434\u043b\u044f WordPress<\/p>\n\n\n\n

    \u0412 Coding standard \u044f \u0432\u044b\u0431\u0438\u0440\u0430\u044e \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u0438 \u0443 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u043f\u0443\u0442\u044c \u043a \u044d\u0442\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0432 \u0435\u0433\u043e \u0432 \u043a\u043e\u0440\u0435\u043d\u044c  \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u044d\u0442\u043e \u0444\u0430\u0439\u043b \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435 https:\/\/codeshare.io\/oQYERp<\/a> \u043f\u043e\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.<\/p>\n\n\n\n

    \u0418 \u0442\u0430\u043a \u043c\u044b \u0434\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0434\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u043a\u043e\u0434\u0430.<\/p>\n\n\n\n

    \u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043f\u043b\u0430\u0433\u0438\u043d\u0430 <\/h3>\n\n\n\n

    \u042f \u0441\u043e\u0437\u0434\u0430\u043b \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u043d \u0442\u0430\u043a<\/p>\n\n\n\n

    <?php\n\/**\n * Ease Car Listing.\n *\n * @package           iwpdev\/ease-car-listing\n * @author            Alex Lavyhin\n * @license           GPL-2.0-or-later\n * @wordpress-plugin\n *\n * Plugin Name: Ease Car Listing.\n * Plugin URI: https:\/\/i-wp-dev.com\n * Description: Ease car listing for your site\n * Version: 1.0.0\n * Author: ALex Lavyhin\n * Author URI: https:\/\/i-wp-dev.com\n * License: GPL2\n *\n * Text Domain: key-crm-synchronization\n * Domain Path: \/languages\n *\/\n\nif ( ! defined( 'ABSPATH' ) ) {\n\t\/\/ @codeCoverageIgnoreStart\n\texit;\n\t\/\/ @codeCoverageIgnoreEnd\n}\n\nuse Iwpdev\\EaseCarListing\\Admin\\Notification\\Notification;\nuse Iwpdev\\EaseCarListing\\Main;\n\n\n\/**\n * Plugin version.\n *\/\nconst ECL_VERSION = '1.0.0';\n\n\/**\n * Plugin path.\n *\/\nconst ECL_PATH = __DIR__;\n\n\/**\n * Plugin main file\n *\/\nconst ECL_FILE = __FILE__;\n\n\/**\n * Min ver php.\n *\/\nconst ECL_PHP_REQUIRED_VERSION = '7.4';\n\n\/**\n * Plugin url.\n *\/\ndefine( 'ECL_URL', untrailingslashit( plugin_dir_url( ECL_FILE ) ) );\n\n\/**\n * Check php version.\n *\n * @return bool\n * @noinspection ConstantCanBeUsedInspection\n *\/\nfunction is_php_version(): bool {\n\tif ( version_compare( constant( 'KEY_CRM_SYNCHRONIZATION_PATH' ), phpversion(), '>' ) ) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nif ( ! is_php_version() ) {\n\n\tadd_action( 'admin_notices', [ Notification::class, 'php_version_nope' ] );\n\n\tif ( is_plugin_active( plugin_basename( constant( 'ECL_FILE' ) ) ) ) {\n\t\tdeactivate_plugins( plugin_basename( constant( 'ECL_FILE' ) ) );\n\t\t\/\/ phpcs:disable WordPress.Security.NonceVerification.Recommended\n\t\tif ( isset( $_GET['activate'] ) ) {\n\t\t\tunset( $_GET['activate'] );\n\t\t}\n\t}\n\n\treturn;\n}\n\n\nrequire_once ECL_FILE . '\/vendor\/autoload.php';\n\nnew Main();\n<\/code><\/pre>\n\n\n\n

    \u041a\u043b\u0430\u0441\u0441 Carbone Fields<\/strong><\/h3>\n\n\n\n

    \u0422\u0430\u043a \u0436\u0435 \u044f \u0441\u043e\u0437\u0434\u0430\u043b \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 Carbone Fields<\/strong> \u043d\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0432\u0438\u0434\u0435\u043e \u0438 \u0441\u0442\u0430\u0442\u044c\u0435<\/p>\n\n\n\n

    \/**\n * Add Custom fields in project.\n *\n * @package iwpdev\/ease-car-listing\n *\/\n\nnamespace Iwpdev\\EaseCarListing;\n\n\/**\n * CarboneFields class file.\n *\/\nclass CarboneFields {\n\n\t\/**\n\t * CarboneFields construct.\n\t *\/\n\tpublic function __construct() {\n\t\t$this->init();\n\t}\n\n\t\/**\n\t * Init hooks.\n\t *\n\t * @return void\n\t *\/\n\tprivate function init(): void {\n\n\t}\n}<\/code><\/pre>\n\n\n\n

    \u041a\u043b\u0430\u0441\u0441 AddCPT <\/h2>\n\n\n\n

    \u0418 \u0441\u043e\u0437\u0434\u0430\u043b \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043a\u0443 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 Custom post type  <\/p>\n\n\n\n

    <?php\n\/**\n * Add Custom fields in project.\n *\n * @package iwpdev\/ease-car-listing\n *\/\n\nnamespace Iwpdev\\EaseCarListing;\n\n\/**\n * CarboneFields class file.\n *\/\nclass CarboneFields {\n\n\t\/**\n\t * CarboneFields construct.\n\t *\/\n\tpublic function __construct() {\n\t\t$this->init();\n\t}\n\n\t\/**\n\t * Init hooks.\n\t *\n\t * @return void\n\t *\/\n\tprivate function init(): void {\n\n\t}\n}\n<\/code><\/pre>\n\n\n\n

    \u0412\u043e\u0442 \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0434\u0435\u0440\u0435\u0432\u043e \u043c\u043e\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441\u0435\u0439\u0447\u0430\u0441<\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n

    \u0422\u0430\u043a \u0436\u0435 \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0432\u0438\u0434\u0435\u043e \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u043c\u0435 \u043d\u0430 \u043c\u043e\u0435\u043c \u043a\u0430\u043d\u0430\u043b\u0435! \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0447\u0442\u043e \u0434\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u043e\u043d\u0430 \u0441\u0442\u0430\u043b\u0430 \u0434\u043b\u044f \u0432\u0430\u0441 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0439\u0442\u0435\u0441\u044c \u043d\u0430 \u043c\u043e\u0439 \u043a\u0430\u043d\u0430\u043b \u0441\u043a\u043e\u0440\u043e \u0442\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0445\u043e\u0434\u0438\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e<\/p>\n\n\n\n

    \n