• Друзья.
    Прошу помощи, ибо реализация моей идеи востребовала нетривиальных путей решения. На просторах необъятного интернета решения своей проблемы ни кодом, ни плагинами не нашел, поэтому обращаюсь к вам, гуру и разработчики.

    Нужда состоит в следующем:
    Размещаем на хостинге в разных папках 2 движка WP. (папки указывают на аличие двух прямых доменов в разных зонах. К примеру ru и com) Лукаем их к одной базе, расположенной там же на localhostе.

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

    Другими словами, оба движка должны быть по-разному пропатчены, но уметь работать в ЕДИНОЙ ИНФОРМАЦИЕЙ В БАЗЕ (Во всех смыслах. Имею в виду, править одни и те же поля таблиц).

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

    Решение:
    $prefix = str_replace( array( ‘www.’, ‘-‘, ‘.’ ), », $_SERVER[‘HTTP_HOST’] );
    $table_prefix = $prefix . ‘_’;
    вместо:
    $table_prefix = ‘wp_’;
    все равно делит базу данных по принадлежности к определенному движку, присваивая данным суффиксы в виде имени домена.

    А гонять инфу из базы в базу или даже в пределах одной базы (при раскладе с ) сторонними средствами — очень не хочется.

    Есть у кого-нибудь готовые решения? Или я очень много хочу от жизни?

Просмотр 15 ответов — с 1 по 15 (всего 15)
  • Модератор Юрій

    (@yube)

    Лукать к одной базе и по-разному пропатчить — нет, боюсь, никто не задавался. Мы тут не настолько продивинутые, мы по старинке коннектимся к базе и используем API.

    Юрий, можно чуть подробнее. Вы коннектиесь к одной базе и… Оба движка лукаются к общей информации? Или каждый отдельно установленный движок использует только информацию в базе с собственным (персональным) префиксом
    как к паимеру
    $table_prefix = ‘wp_’;
    $table_prefix = ‘wp1_’;
    ?

    Для уточнения острого момента — мне необходимо, чтобы оба движка лукались на $table_prefix = ‘wp_’;
    А когда я меняю настройки в wp-config — каждый последующий запущенный WP — ибо ругается, либо просто не запускается.

    Вот такая картина.

    Модератор Юрій

    (@yube)

    Два движка одной версии прекрасно живут с одними и теми же таблицами — проверено. Проблемы возникают с Темами и плагинами, если они не синхронизированы. А если Темы и плагины идентичны, то возникает другой, вполне закономерный вопрос: нафига держать два движка в разных директориях? Достаточно одного. А кастомизация по доменам достигается подменой некоторых опций при инициализации.

    Благодарю за подробный ответ, Юрий.
    Действительно, все происходит так, как Вы и сказали. Стоило синхронизировать плагины, все заработало.
    Синхронизировал плагины, установил идентичные темы, после чего заменил $table_prefix = ‘wp_’; в обоих движках и все было бы ок,
    Но в момент инициализации меня автоматом перебрасывает в зону основного домена. (Заходя по адресу test.ru/wp-login.php оказываюсь в админке test.com/wp-admin)
    Вот такие дела.
    В принципе, на сюрпризы и не рассчитывал, но очень хотелось.
    Я рассчитывал на другое. Надежды не оправдались.
    А если все-же изначально отталкиваться от того, что необходимо два разных движка, пропатченных совершенно по-разному с разными темами и разным функционалом.
    Причем функционал одного практически в неизменном виде, а второй предполагалось использовать в качестве социальной сети.. И чтобы цеплялись они друг за друга только блогами и комментамик ним. Как порекомендуете поступить?
    Поднять с одного домена в режиме мультисайта (к примеру test.com) и пропатчить основной, который на домен смотрит. А на второй, который будет иметь адрес (к примеру test.com/site1) подкаталожный — просто переадресовывать (с test.ru -> test.com/site1).
    Для моих целей, к сожалению, принципиально, чтобы люди, приходящие ра test.ru — видели свой блог по адресу test.ru/blog12345, а не по адресу test.com/site1/blod12345
    И принципиально важна возможность, чтобы из test.com (который предполагался с модулем buddypress) в test.ru были видны ответы на блоги. Равно как и наоборот.
    Проза жизни.
    Доктор, я безнадежен?

    Модератор Юрій

    (@yube)

    Обеспечить «доменную всеядность» когда-то помогало

    define ('WP_HOME','http://'.$_SERVER['HTTP_HOST']);
    define ('WP_SITEURL','http://'.$_SERVER['HTTP_HOST']);

    в wp-config.php

    Юрий, да Вы гений))) Только скрываете это под темными очками)
    Теперь действительно 2WP жрут оба домена и не давятся)
    (Взял этот прием на заметку)
    Но проблема осталась прежней. Для работоспособности системы критически важны идентичные настройки тем и плагинов. Даже при установке buddypress на обоих движках — не возможно разделить им настройки, так как они, как я понял по опыту, имеют непосредственное отношение к базе sql. Видимо, с этим я ничего не смогу поделать?
    Либо прийдется очень глубоко копать. Я прав?

    И еще очень интересует ваше авторитетное мнение насчет варианта описанного в предыдущем посте?
    (Вариант с Мультисайтом)

    Или все-же проще и правильнее для описанных целей — будет вариант с установкой двух раздельных WP с вариантом перекачки выборочной и ТОЛЬКО необходимой информации внутри базы sql? Как думаете?

    И если так, то чем обеспечить такие манипуляции.

    В виду недостаточных знаний по sql, единолично не могу сделать выводов о том, можно ли некоторые поля в таблицах реализовать общими для двух независимых WP, обращающихся к одной базе с разными префиксами (надеюсь, что понятно сформулировал мысль).
    Имею в виду, чтобы настройки движков реализовать отдельнымыми, а вот таблицы относящиеся непосредственно к пользователям оставить общими.
    Или же это повлечет серьезные изменения в коде?

    Модератор Юрій

    (@yube)

    Для борьбы с настройками есть хуки ‘pre_option_*’. Это если по мелочам. Если по серьезному, то надо смотреть, можно ли сделать различные таблицы опций. Я не знаю, не интересовался. Но если есть возможность объединить юзеров из разных, скажем так, префиксов, а она давно есть, то почему быть возможности поиздеваться над таблицей опций? Я имею в виду не грязный хак, а через API.

    Как раз курил кодекс на эту тему.
    http://codex.wordpress.org/Editing_wp-config.php#Custom_User_and_Usermeta_Tables

    Скажите где можно подробно почитать на эту тему и чем лучше пользоваться для объединеия юзеров внутри users и usermeta. Если это достаточно простое действие, вероятно у меня выйдет подружить posts и postmeta и comments и commentmeta внутри одной базы но разных префиксов.
    А все остальные пункты и не обязательно.(как говориться «его дом труба шатал»)))
    На этом должно функционала хватить.

    Модератор Юрій

    (@yube)

    Скажите где можно подробно почитать на эту тему и чем лучше пользоваться для объединеия юзеров внутри users и usermeta.

    Понятия не имею. Но главные строки Вы уже нашли.

    Если это достаточно простое действие, вероятно у меня выйдет подружить posts и postmeta и comments и commentmeta внутри одной базы но разных префиксов.

    Действие очень простое — указать одному из движков таблицы с префиксами другого движка. Но самое интересное начинается потом, когда выясняется, что права юзеров (роли) по каждому сайту выставляются раздельно. Впрочем, может это и нормально, не знаю.

    Я тут подумал, мне даже не так важно обменивать движки юзерами. Для меня гораздо важнее обменивать движки их сообщениями.

    Попробовал наладить обмен юзерами в двух движках на одной базе и мой компьютер сошел с ума из за циклической ссылки)))

    Не получается, однако, обменять «равноправно» оба движка пользователями без «проблем для здоровья» обоих.

    Способ описанный тут:
    http://mywordpress.ru/support/viewtopic.php?pid=70168
    Хорош для делегирования пользователей, но не для обмена ими.
    По аналоги — не получается обменяться постами пользователей и их комментами. Может у кого и получалось, но у меня не вышло.

    Идеальным вариантом было бы, если бы вся информация кроме настроек виджетов, тем и прочих настроек хранилась бы в базе совсем без префиксов движков.

    Не знаю как быть. Попробовал все, что приходило в голову и все, на что она была способна.
    Расстройство.

    Если рассмотреть вариант с реализацией идеи при помощи мультисайта.
    Но, принять во внимание тот факт, что сайт с базой на локалхосте исключает возможность использования поддоменов, и остается лишь возможность использования подкаталогов. (да и мне больше нравится простота их использования)
    Существует ли возможность подменить часть домена при помощи htacess и\или плагина MU в варианте
    с
    test.com/ru/*blog1234567890 (по второй слеш)
    на
    test.ru/blog1234567890 (по первый слеш, соответственно)
    но просто перенаправить — недостаточно. Необходимо сохранить наполнение, которое мы имеем в
    test.com/ru/blog1234567890
    Есть какие-либо простые варианты для исполнения?

    только что поставил чистый вордпресс 3.3.1 натянул мультисайт (на подкаталогах), поставил и настроил domain mapping.
    После перехода по ссылке — вместо того, чтобы подкидывать сайт на указанный в праймари домен — он меня просто переадесует по указанному url адресу. Где я накосячил? что я делаю не так?
    Уже все что мог, попробовал.

    Юрий, выручайте, умоляю!!!
    Я уверен, вы знаете, что необходимо поправить и вы в силах мне помочь.

    Модератор Юрій

    (@yube)

    Не знаю (

Просмотр 15 ответов — с 1 по 15 (всего 15)
  • Тема «два движка на одной базе с разных доменов, а главное…» закрыта для новых ответов.