-
11. Data: 2011-09-08 11:12:48
Temat: Re: Wordpress, dwie bazy i unikalny ID post-a
Od: Peter May <p...@o...pl>
W dniu 07-09-2011 22:02, porneL pisze:
> On Wed, 07 Sep 2011 10:17:39 +0100, Peter May <p...@o...pl> wrote:
>
>> Któregoś dnia klientowi dawno temu postawiłem WP i zachciało się
>> wielojęzyczności. W WP nie było i nadal nie jest to proste, więc
>> wówczas utworzyłem dwie bazy danych. Przełączanie między językami
>> zrobiłem prosto poprzez zwykłe przełączanie między bazami danych.
>>
>> Jednak problem zaczął się wtedy, gdy napisałem plugin, którego wynik
>> jest zależny od zawartości konkretnych postów. No i zrobił się
>> problem, bo posty można było tworzyć o tej samej treści dowolnie, ale
>> gdy klient "mieszał" w WP, to w każdej bazie ID-ki postów rozjechały się.
>
> Wartość następnego ID dla auto_increment da się odczytać i ustawić (w
> MySQL to ALTER TABLE xxx AUTO_INCREMENT=xxx), więc możesz zrobić proste
> "api", które będzie kopiowało największy ID między serwerami (dorzuć
> request byle gdzie w kodzie przed zapisaniem posta).
Request nie będzie potrzebny, bo obie bazy są na tym samym serwerze. A z
tym api to właśnie tą drogą chcę pójść. Zastanawiam się czy nie lepiej
będzie jak WP utworzy wpis, ja sprawdzę czy w drugiej bazie jest wolny
taki sam ID i wówczas "sklonować" wpis w drugiej bazie. W przypadku
konfliktu ID-ków wpisów nowo utworzony musiałbym kasować lub zmieniać mu
na takie ID, by były oba zgodne z obu bazach.
> ...ale dużo sensowniejszym rozwiązaniem było by nadawanie jakiegoś
> bardziej ludzkiego i kontrolowanego identyfikatora postom, np. taki sam
> tag, slug/URL czy własna specjalna kolumna.
Raczej nie. Dlatego, że user nie zapanuje nad slug-ami, tagami, itp. A
pilnowanie, by posty miały te same ID-ki daje 100% gwarancji.
--
Peter
-
12. Data: 2011-09-08 11:21:23
Temat: Re: Wordpress, dwie bazy i unikalny ID post-a
Od: Peter May <p...@o...pl>
W dniu 07-09-2011 14:22, |<onrad pisze:
> On Wed, 07 Sep 2011 11:17:39 +0200, Peter May wrote:
>
>> zachciało się
>> wielojęzyczności. W WP nie było i nadal nie jest to proste,
>
> nie zgodze sie :)
> http://wpml.org/
> teraz jest platne ale imo warte wydania kasy (choc pewnie w Twoim wypadku
> juz na to za pozno)
WPML testowałem, ale niewiele. Więc de facto nie jestem w stanie
stwierdzić na ile jest jego działanie dobre w boju.
> a odnosnie samego problemu:
>
> po utworzeniu wpisu badz jego aktualizacji wordpress odpala akcje o
> nazwie 'save_post'. akcja ta jako argument przyjmuje ID utworzonego/
> zmodyfikowanego wpisu. dopisz funkcje, ktora sprawdzi ten id i
> ewentualnie przez $wpdb->update zmien identyfikator na odpowiedni
>
> nigdy tego nie robilem, ale uprzedzam ze byc moze bedziesz musial tez
> zrobic $wpdb->update na tabeli wp_postmeta. tu masz schemat bazy
> wordpressa jak cos
> http://codex.wordpress.org/File:WP3.0-ERD.png
Dzięki. Sprawdzę to szybko w działaniu.
--
Peter