Расул Гитинов: Если кратко, функция get_theme_mod() принимает 2 аргумента (см. документацию). 1й аргумент - название поля/мода, 2й - значение по умолчанию, которое будет использовано, если мод/поле не найдено.
Расул Гитинов: тогда используйте в проверке if( ! empty( get_theme_mod( 'logo_load' ) ) ). Кстати, у него тоже есть 2й аргумент для передачи значения по умолчанию, что должно упростить жизнь. Поэтому, вместо всяких проверок по идее достаточно использовать:
echo get_theme_mod( 'logo_load', $default_logo );
где $default_logo содержит значение по умолчанию, например, get_template_directory_uri() . '/images/default_logo.png'
Расул Гитинов: maybe_unserialize(). Впрочем, если работать с Customizer API, то $wp_customize->get_setting() возвращает уже готовый к употреблению объект, а не сериализованный массив. Но, похоже, вы пытаетесь работать каким-то другим методом. Подозреваю, через get_option(). В этом случае десериализовать тоже не нужно, эта функция уже использует упомянутый выше maybe_unserialize(). В то же время, для get_option() эта все каша вообще не нужна, так как у него 2й аргумент - значение по умолчанию.
В общем, показывайте код. А то непонятно чем вам помочь.
Расул Гитинов: $image_field - это ваша переменная, содержащая урл картинки. Поскольку массив у вас сериализован, то после получения опции из БД, это будет $your_array['logo_load']
Kevin Glare: значительный, потому что готового, типового решения нет (см. мой ответ). Любое из возможных решений - это не 10-20 строк кода, которые за пару минут вам тут можно набросать, да еще и так, чтоб вы поняли что к чему. Так, если вкратце:
- кастомный механизм авторизации (вход, выход в вашем случае)
- кастомные транзакционные письма
- закрытый за авторизацией фронтенд (обработка запросов, роутинг урл и переадресаций, правила перезаписи, необходимые шаблоны страниц)
- механизм создания этого аккаунта/фронтенда админом
- механизм связки этого аккаунта с реальным контентом (услугой)
- мезанизм заказа этой услуги или отказа от нее (и дальнейшей обработки для админа - удаление заказа, смена статуса и тд)
И это далеко не все. У вас по сути даже ТЗ нету, вы не представляете объем этой задачи (в первую очередь - сколько мелких связанных задач будет). Я не говорю что она огромная или сложная. Для специалиста ничего необычного. Но, как я уже написал, для не-разработчика это неподъемный кусок работы. Хотите сами - учите матчасть, долго и нудно, изобретайте велосипеди и наступайте на грабли. Хотите быстро и качественно - наймите специалиста.
ЗЫ: Поймите меня правильно, я из тех, кто на Тостере и StackOverflow с удовольствием помогает в самых разных ситуациях. Но у вас тот случай, когда это никак не укладывается в рамки вопроса-ответа на QA сайте. Вопрос слишком общий, объем работы ощутимый.
mrusklon: Документацию кто будет читать? :) Если OpenServer стоит и на нем работает сайта, BrowserSync настраиваете его проксировать. Все. LiveReload не нужен, BrowserSync используется вместо него.
Иван Калиниченко: так используйте, никаких проблем с namespaces, traits и тд у WP нет. Надо - используйте. Вот и все. Я использую Composer, автозагрузку, пространства имен и многие другие фичи. Никаких проблем с этим нет.
ligisayan: дело не в том кто первый :) Думайте, как будет удобнее будущим поколениям, которые будут гуглить (или прям тут на тостере искать) и найдут готовое решение, которое поможет им быстро решить аналогичную проблему.
Andrzej Wielski: И вместо unserialize используйте maybe_unserialize, так надежнее. Она будет де-сериализовать только если данные действительно сериализованы. Если вдруг придет обычная строка или массив/объект, она ничего не сделает с ними, вернет в первозданном виде. Unserialize же будет ругаться.