• Ребятки, нужен плагин для продажи видеокурсов на wordpress, правильно ли я мыслю?

    Tatyana12321, вставьте свой id товара. Для этого, возьмите товар, который должен менять роль, сделайте его виртуальным и посмотрите какой у него id. Установите свой вместо моего: array( '3420' ); // id товара => array( 'ваш id товара' );

    Так же проверьте роли, совпадают или нет. У меня например: add_role( 'clientpro' ), установите свою.
  • Разбивать ли css на несколько файлов?

    Ксения, проще контролировать и оптимизировать, при необходимости управлять из админки не затрагивая основные стили
  • PHP Class: file_get(put)_contents. Как сохранять значения формы в разные файлы?

    AGorbunoff
    @AGorbunoff Автор вопроса
    Благодарю за подсказку, помог 2 вариант. Получил значение методом $_POST['utm'];

    В последнем куске класса дописал:
    // Сохраняем настройки в файл
        public function save($settings) {
            $utm = $_POST["utm"];
            file_put_contents($this->basePath . 'config/utm/'.$utm.'.json', json_encode($settings));
            $this->setSettings();
        }
  • PHP Class: file_get(put)_contents. Как сохранять значения формы в разные файлы?

    AGorbunoff
    @AGorbunoff Автор вопроса
    Спасибо за наводку, получил аргумент через $_POST
  • PHP Class: file_get(put)_contents. Как сохранять значения формы в разные файлы?

    AGorbunoff
    @AGorbunoff Автор вопроса
    ThunderCat, да, кумекаю в этом направлении:) если не осилю, придется по старинке через GET реализовывать или делать название файла как id+1
  • PHP Class: file_get(put)_contents. Как сохранять значения формы в разные файлы?

    AGorbunoff
    @AGorbunoff Автор вопроса
    Спасибо за ответ! Я полный нуб в классах:) но желаю начать сразу с правильного подхода:)

    Итак, первое - странный класс так назван для удобства. Это простая админка на файлах и пока пишет в один файл, а я хочу добавить поле utm чтобы для каждой формы генерировать отдельный файлик.

    Второе. UTM метка действительно состоит из нескольких полей, но мне нужно только одно: UTM_content, я под эту метку собираюсь пилить мултилендинг. Вот для одного блока мультилендинга и нужны: 1 метка и набор полей.

    Третье. Да, ума никак не дам, как получать название файла из поля: метка. Прочтите пожалуйста мои комментарии к ответу Антона Неверова.
  • PHP Class: file_get(put)_contents. Как сохранять значения формы в разные файлы?

    AGorbunoff
    @AGorbunoff Автор вопроса
    Еще, в режиме реального времени получаю данные из формы через javascript^

    setInterval(function(){out.innerHTML = utm.value}, 100);


    Но как мне это поможет наименовать файл в рамках класса class Admin?
  • PHP Class: file_get(put)_contents. Как сохранять значения формы в разные файлы?

    AGorbunoff
    @AGorbunoff Автор вопроса
    Хотелось бы название файла такое как метка UTM.

    А вот по второму пункту туплю! Как же получить так же, как другие данные из формы?

    Данные вывожу через функцию: print_r($admin->getValue('phone')); где $admin обращается к классу.

    Но в рамках самого класса это не работает.

    Посмотрите пожалуйста в коде раздел: private function setSettings()

    Как оттуда извлечь данные 'utm' внутри самого класса class Admin?
  • Как спарсить выдачу Яндекс.Карт?

    @Nikkorfed, для одного из своих проектов запилил на CURLe.


    Выкладываю рабочий скрипт создания шорткода (WordPress) для рейтинга организации.
    Важно: работает на библиотеке phpQuery
    Шорткод можно создать и для чистого PHP. Здесь есть вариант BBCode.

    <?php
    
    /* Вводные данные
    * Адрес организации вида: https://yandex.ru/maps/org/---id---
    * Class, в котором находится рейтинг: 'orgpage-reviews-view__rating-score'
    * Подключить библиотеку phpQuery: https://code.google.com/archive/p/phpquery/
    */
    
    function curlshot_func() {
    
    $get_url = 'https://yandex.ru/maps/org/---id---';
    $refer = 'http://google.ru';
    
    $headers = array (
    	"Cache-control: no-cache",
    	"Upgrade-insecure-requests: 1",
    	"DNT: 1",
    	"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp",
    	"Connection: keep-alive",
    	"Upgrade-Insecure-Requests: 1",
    	"Pragma: no-cache",
            "TE: Trailers",
    	"Accept-language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3"
    );
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $get_url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    /*curl_setopt($ch, CURLOPT_PROXY, '127.0.0.1:8080');
    curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
    curl_setopt($ch, CURLOPT_PROXYUSERPWD,'user:pass');*/
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_REFERER, $refer );
    curl_setopt($ch, CURLOPT_COOKIEFILE, __DIR__ . '/cookie.txt');
    curl_setopt($ch, CURLOPT_COOKIEJAR, __DIR__ . '/cookie.txt');
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36');
    curl_setopt($ch, CURLOPT_VERBOSE,1); 
                
    $data = curl_exec($ch);
    if ($output === FALSE) {
        // Если что-то пошло не так
        echo 'Упс, ошибочка: ' . curl_error($ch);
        return;
    }
    $document = phpQuery::newDocument($data);
    $element = $document->find('.orgpage-reviews-view__rating-score')->text();
    return $element; // не echo, а именно return корректно отображает данные в шорткоде
    }
    add_shortcode('curlshot', 'curlshot_func');


    Скрипт выведет в шорткоде значение рейтинга организации: [curlshot]
  • Как создать сайт-конструктор?

    Да полностью взаимодействует и можно еще добавить графики и интерактива. Еще + 350 домов и +10500 вариантов отделки! Например, накачать с Freepik иллюстраций и настроить любой интерактив, любое взаимодействие.
  • Как создать сайт-конструктор?

    Олег Петров, как хорошо подметил Robur самое сложное это - "...рисуете дизайн всего этого , прорабатываете интерактив, составляете требования к приложению, по требованиям и возможностям выбираете технологию на которой можно это сделать, делаете, тестируете, допиливаете, запускаете..."

    И тут смотрите на свои компетенции. Ведь придется весь этот объем выгрузить на голову программиста и идти с ним бок о бок на всем протяжении запуска и тестирования. Собирать обратную связь, возможно переписывать заново код, зависеть от правил пользовательского соглашения Google, учитывать все нюансы своего стартапа. Терпеть узкий охват аудитории и т. д. При этом вкладываться и деньгами и временем и все время переделывать.

    В этом случае свой сайт выигрывает для стартапа. Тем более, что современные сайты могут работать быстрее ракеты и приложения. В сайтах можно реализовать оффлайн режим и не придется ждать пока загрузится интернет. Свой сайт - это ваша собственность и правила ставите сами.

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

    А когда конструктор заработает "как задумано", с программистом общаться станет легче легкого - "бери и делай" на раз, два и три. И не только в Андроид, но и в IOS + Windows и вот тогда, охват будет близиться к 100% пользователей.
  • Как создать сайт-конструктор?

    С ...wordpress.com врядли можно кашу сварить. Все бесплатное имеет дикие ограничения. 250 руб\год за домен отдавать не так уж дорого и простой хостинг. Например, хорошее качество, цены и поддержку оказывает AiWebHost.com

    По поводу всё в одном такая же ерунда начнется с ограничениями, так как это будут какие-то интеграторы. Лучше отдельно разрабатывать сайт и отдельно приложение. Когда создадите конструктор на сайте, тогда понятным станет функционал и идете на биржи фриланса, например на Кворк.Ру есть кворки для недорогого создания нативных приложений. Только должно быть очень внятное техническое задание.

    Вордпресс чем хорош, тем, что без особых знаний можно создать прототип своей идеи (стартануть с нуля) и дальше, если идея выстрелит и начнет приносить прибыль, на основании модели заказать полноценный сайт на нормальном коде или фреймворке, + включая и единую платформу с приложениями и чат-ботами.
  • Как в $post_id передать нужную запись для события cron и обновления полей update_post_meta по расписанию?

    AGorbunoff
    @AGorbunoff Автор вопроса
    Спасибо ребят, в итоге заработало с такой конструкцией:

    global $post;
    
        $args = array(
    	'post_type'       => 'post'
    	  );
        $lastposts = get_posts( $args );
    
        foreach( $lastposts as $post ){
    	setup_postdata($post); // устанавливаем данные	
    	$post_id = get_the_ID(); // получаем ID записи	
            update_post_meta( $post_id, 'allkeywords', $keywords  ); 
            //  обновляем произвольное поле 
         }
  • Как в $post_id передать нужную запись для события cron и обновления полей update_post_meta по расписанию?

    AGorbunoff
    @AGorbunoff Автор вопроса
    Спасибо за наводку! Теперь, как это применить в данной задаче?

    Вот что я нагуглил:) но это не работает. Прошу понять и простить новичка.

    function updated_meta() {
    
        // какая-то задача, например ключевые слова
        $keywords = 'ключевые фразы для серии постов';
    
        $args = array(
    	'post_type'       => 'post',
    	'post_status'     => 'published'
        );
        $lastposts = get_posts( $args );
    
        foreach ( $lastposts as $post ) {
    	setup_postdata($post); // устанавливаем данные	
    	update_post_meta( get_the_ID(), 'allkeywords', $keywords );
        }
     }
    add_action( '24_event', 'updated_meta', 1 );
  • Как спарсить выдачу Яндекс.Карт?

    FanatPHP, Вы не правильно поняли. В контексте не идет речи о халяве или краже контента. Только скрапинг безопасными способами, не в ущерб ресурсу и только открытых данных. Например, этот топик посвящен извлечению данных из отзывов. Это может быть рейтинг компании.

    Зайдите в поиск Google напишите любое известное заведение и Вы увидите в карточке Google не только свой рейтинг и отзывы, но и рейтинг Яндекса + Отзовика.

    Как Вы считаете, Google нарушил пользовательское соглашение Яндекса, который и сам за милую душу парсит Googl'a. Это позволяет пользователям иметь объективные данные о заведении и служит для развития здоровой конкуренции между заведениями.
  • Как спарсить выдачу Яндекс.Карт?

    FanatPHP, судебный прецедент в США послужит для торжества здравого смысла, когда разработчики и их клиенты смогут подавать иски за упущенную выгоду нанесенную несовершенствами действующего законодательства. Ни один закон, ни одно соглашение и договор не могут причинять ущерб и создавать препоны для развития общества и здоровой конкуренции.
  • Как реализовать парсер товаров из интернет магазина средствами PHP?

    Евгений, если информация в открытом доступе, могут схлопотать иск за то что попытаются воспрепятствовать коммерциализации их открытых данных:))

    https://habr.com/ru/company/globalsign/blog/466911/

    Не стоит злостно вмешиваться в контракт ( tortious interference with contract ) и мешать благому делу скрапинга сайтов =)
  • Как спарсить выдачу Яндекс.Карт?

    Никита Корнилов, суд США полностью легализовал скрапинг сайтов и запретил ему технически препятствовать!

    https://habr.com/ru/company/globalsign/blog/466911/

    Технические меры LinkedIn по блокировке скрапинга мешают контрактам hiQ с собственными клиентами, которые полагаются на эти данные. На юридическом жаргоне это называется «злостным вмешательством в контракт» (tortious interference with contract).


    Во как! Если какой-то сайт принимает меры на защиту от скрапинга открытых данных - это злостное вмешательство в контракт. Так что юридически, скрапинг открытых данных здравое дело. И в России похоже судебные иски еще впереди.

    Единственное, что парсить нужно как браузер.

    Суд не только легализовал эту практику, но запретил мешать конкурентам снимать информацию с вашего сайта в автоматическом режиме, если сайт является общедоступным. Суд подтвердил понятную логику, что заход бота-скрапера юридически не отличается от захода браузера. В обоих случаях «пользователь» запрашивает открытые данные — и что-то делает с ними на своей стороне.

    Сейчас многие владельцы сайтов пытаются поставить технические препоны конкурентам, которые полностью копируют их информацию, не защищённую копирайтом. Например, цены на билеты, товарные лоты, открытые профили пользователей и т. д.

    Некоторые сайты считают эту информацию «своей», а скрапинг расценивают как «воровство». Юридически это не так, что теперь закреплено официально в США.
  • Как спарсить выдачу Яндекс.Карт?

    Никита Корнилов, слово "парсить" оскорбляет чувства разработчиков:)) и звучит как крамола в отношении пользовательского соглашения Яндекс. Давай, это слово оставим для хакеров с даркнета, а в профсоюзе будем употреблять такие фразы как: извлечь данные из открытых источников:)

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

    И это, я считаю, не есть воровство и криминал, ведь данные извлекаются из открытых источников для публикации в открытом же доступе с активной ссылкой на первоисточник. Это как фреймом открыть видео с YOU tube. Не вижу ничего в этом плохого, напротив, сплошные плюсы и Яндексу дополнительный трафик + популяризация платформы в лице владельцев компаний городов.