Jak mogę kontrolować zawartość moich stron pod kontrolą wersji?

13

Mamy stronę internetową opartą na WordPress, która dostarcza dokumentację do naszego interfejsu API REST. Ponieważ nasz interfejs API ciągle się zmienia, zmienia się również dokumentacja. Chcielibyśmy jednak zachować kontrolę nad wersją dokumentacji, aby można ją było dopasować do zatwierdzeń interfejsu API. Czy istnieje sposób, aby strony WordPress pobierały swoją zawartość ze zdalnego repozytorium (na przykład GitHub)? Czy istnieje sposób na wypchnięcie treści do WordPress z jakiegoś repozytorium?

Elliot Cameron
źródło

Odpowiedzi:

6

Masz już coś takiego: Weryfikacje .

// Define the nr of saved revisions in your wp-config.php
define( 'WP_POST_REVISIONS', 30 );

Można po prostu chwycić je poprzez wywołanie get_posts()z post_typeo revision.

Aby pokazać różnicę między dwiema wersjami, po prostu użyj wp_text_diff().

// Example
$revisions = get_posts( array(
    'post_type' => 'revision'
) );
echo wp_text_diff(
     $revisions[0]['post_content']
    ,$revisions[1]['post_content']
    ,array(
         'title'       => 'Revision diff'
        ,'title_left'  => $revisions[0]['post_title']
        ,'title_right' => $revisions[1]['post_title']
     )
);

Aby różnicować np. Ostatnią wersję z wersją wcześniejszą, możesz użyć end( $revisions )['post_content']i różnicować ją $revisions[ count( $revisions ) -2 ]['post_content']. (Uwaga: -2ponieważ indeks tablic zaczyna się od zera, a chcesz wersję przed ostatnią).

kajzer
źródło
Podoba mi się pomysł zmiany. Istnieje również popularna wtyczka WP Document Revisions, która może pomóc w lepszym zarządzaniu wersjami.
Anh Tran
@Rilwis To powinna być odpowiedź :)
Kaiser
5

Możesz użyć haka i postu Git na XML-RPC do WordPress. Hakiem Git może być dowolny plik wykonywalny, nawet PHP.

Inną opcją - na GitHub - jest użycie haka e-mail: Idź do https://github.com/username/projectname/admin/hooks, wybierz E - mail i wyślij e-mail na blog. Włącz funkcję wysyłania pocztą e-mail .

fuxia
źródło
2
+1 Teraz potrzebujemy tylko kombinacji obu funkcji (zbudowanych jako OP przez Solidną wtyczkę) :)
Kaiser