Jak zbiorczo odznaczyć kategorię dla postów bez wtyczki?

Opublikowany: 2020-10-05

„Kategoria” to domyślna taksonomia w WordPressie. Operatorzy mogą używać kategorii do sortowania i grupowania postów na blogu w różne sekcje. Kategorie pomagają również odwiedzającym szybciej poruszać się po witrynach, a także wiedzieć, jakich tematów dotyczą Twoje witryny. Operator serwisu może realizować podstawowe operacje na kategoriach i postach za pomocą paneli administracyjnych WordPress, a także używać wtyczek WordPress do manipulowania postami na różne sposoby.

Spis treści ukryj
  1. 1. Zrozumienie, w jaki sposób WordPress obsługuje żądania internetowe od klientów?
  2. 2. Ważne tabele do masowego manipulowania postami WordPress
  3. 3. Przenieś wszystkie posty z kategorii do innej kategorii – za pomocą poleceń SQL
    1. 3.1. Uzyskaj listę identyfikatorów wszystkich postów należących do określonej kategorii
    2. 3.2. Uzyskaj identyfikator nowej kategorii
    3. 3.3. Zaktualizuj posty za pomocą list z podanymi identyfikatorami
  4. 4. Ostatnie słowa

Jednak nadużywanie wtyczek dla witryn WordPress nie powinno być opcją, ponieważ prawdopodobnie powoduje potencjalne problemy z wydajnością i bezpieczeństwem. W tym artykule dowiemy się, jak zbiorczo usunąć zaznaczenie kategorii dla postów bez używania wtyczek .

Rozumiesz, jak WordPress obsługuje żądania internetowe od klientów?

Zrozumienie, w jaki sposób serwer WWW obsługuje żądania od klienta, jest niezbędne do manipulowania witryną WordPress. Szczegółowe operacje obejmują zbiorcze odznaczanie postów w kategorii.

Typowym serwerem WWW jest stos LAMP (Linux – Apache – MySQL/MariaDB – PHP). Inne równoważne koncepcje można znaleźć na innych platformach serwerów WWW.

Aby zbiorczo odznaczyć posty, powinieneś dowiedzieć się, jak WordPress obsługuje żądania.

LAMP łączy komunikację serwer-klient

1. Klient wysyła żądania HTTP z prośbą o dane sieciowe z serwera WWW.

2. Serwer WWW odbiera prawidłowe żądania HTTP od klientów (po przejściu reguł zapory):

  • Analizuj strukturę żądań HTTP, określaj, jakich dokładnie stron HTML potrzebują klienci;
  • Parsowanie żądań do warstw skryptowych (PHP).

3. Warstwy skryptowe PHP:

  • Zapytanie do bazy danych, uzyskanie wszystkich niezbędnych informacji;
  • Połącz z kodem źródłowym w motywach, aby renderować dynamiczne strony internetowe;
  • Wróć do serwera WWW.

4. Serwer WWW:

  • Konstruuj komunikaty odpowiedzi HTTP.
  • Wysyłaj wiadomości odpowiedzi HTTP do klientów.

5. Klient otrzymuje wiadomości odpowiedzi HTTP od serwera WWW, a następnie wyświetla dane WWW w swoich przeglądarkach internetowych.

Ważne tabele dla masowych manipulacji postami WordPress

W schemacie bazy danych witryn WordPress znajduje się paczka tabel. Schematy różnią się w zależności od witryny. Jednak podczas manipulowania postami w witrynie WordPress, te tabele powinny być bardziej zaniepokojone:

Nazwa tabeli Opisy
wp_postmeta Przechowuj dodatkowe dane związane z treścią witryny WordPress.
wp_post Przechowuj wszystkie ważne dane dotyczące treści witryny WordPress.
wp_term_relationships Przechowuj wszystkie połączone dane łączące posty z kategoriami, tagami, linkami. Informacje z tej tabeli działają jak mapa między obiektami terminów a terminami.
wp_term_taxonomy Przechowuj dodatkowe dane dla tabel wp_terms .
wp_term Przechowuj kategorie, tagi dla postów, stron i linków.

Przenieś wszystkie posty z kategorii do innej kategorii — za pomocą poleceń SQL

Aby bezpośrednio manipulować bazą danych WordPress, operatorzy muszą zdecydować, którego systemu DBMS (Database Management System) użyć. Ponieważ środowisko laboratoryjne wykorzystuje stos LAMP jako platformę internetową, operatorzy mogą pracować z bazami danych WordPress za pomocą phpMyAdmin, wtyczek WordPress, a nawet klienta MySQL (polecenie terminala) poprzez sesje SSH… W tym scenariuszu DBMS to MySQL WorkBench dla lepszej ilustracji.

Przed wprowadzeniem jakichkolwiek zmian w bazach danych WordPressa wskazane jest wykonanie pełnej kopii zapasowej witryny WordPress. Ta pełna kopia zapasowa obejmuje kod źródłowy WordPress (motywy, pliki PHP…) i strukturę bazy danych. W idealnym przypadku operatorzy mogą utworzyć pełną kopię zapasową całego hosta, na którym działa witryna WordPress.

Oto kompletne skrypty SQL do przenoszenia wszystkich postów z kategorii „Bez kategorii” do kategorii „Inspiracje”.

 USTAW @listID = (
     	WYBIERZ GROUP_CONCAT (ID) Z wp_posts
             	GDZIE post_type="post"
             	AND post_status = "opublikuj"
             	I ID W (
                      	SELECT object_id FROM wp_term_relationships
                               	GDZIE term_taxonomy_id W (
                                        	SELECT term_taxonomy_id FROM wp_term_taxonomy
                                                	GDZIE taksonomia = "kategoria"
                                                	ORAZ term_id IN (
                                                         	SELECT t.term_id FROM wp_terms t
                                                                  	GDZIE t.name="Bez kategorii"
   	 )
	)
)
);

USTAW @nowakategoriaID = (
     	SELECT t.term_id FROM wp_terms t WHERE t.name='Inspiracje'
);
 
WYBIERZ @nowakategoriaID;
 
ustaw @sqlCmd = ZŁĄCZ (
     	'AKTUALIZUJ wp_term_relationships tr',
	'SET tr.term_taxonomy_id = ', @newCategoryID , ' ',
	'GDZIE tr.object_id IN (', @listID , ');'
);

WYBIERZ @ sqlCmd;

PRZYGOTOWANIE instrukcji z @sqlCmd;
ZESTAW SQL_SAFE_UPDATES = 0;
WYKONAJ stmt;
ZESTAW SQL_SAFE_UPDATES = 1;
ZWOLNIJ PRZYDZIELENIE PRZYGOTOWANIA INSTRUKCJI;

Szczegółowy skrypt zostanie wyjaśniony w następujący sposób.

Uzyskaj listę identyfikatorów wszystkich postów należących do określonej kategorii

W tej demonstracji pokażemy, jak zbiorczo usunąć zaznaczenie wszystkich postów z kategorii „Bez kategorii”, a następnie przenieść je do nowej kategorii o nazwie „Inspiracje”.

Z panelu administracyjnego WordPressa te 3 posty są sortowane w kategorii „Bez kategorii”.

Uzyskaj listę ID zawierającą 3 posty, aby zbiorczo usunąć dla nich kategorię.

Poniższe polecenia SQL uzyskają wszystkie identyfikatory postów z kategorii o nazwie „Bez kategorii”.

 USTAW @listID = (
     	WYBIERZ GROUP_CONCAT (ID) Z wp_posts
             	GDZIE post_type="post"
             	AND post_status = "opublikuj"
             	I ID W (
                      	SELECT object_id FROM wp_term_relationships
                               	GDZIE term_taxonomy_id W (
                                        	SELECT term_taxonomy_id FROM wp_term_taxonomy
                                                	GDZIE taksonomia = "kategoria"
                                                	ORAZ term_id IN (
                                                         	SELECT t.term_id FROM wp_terms t
                                                                  	GDZIE t.name="Bez kategorii"
        )
    )
)
);

Sprawdź wartość @listID :

Pobierz listę identyfikatorów postów, aby zbiorczo usunąć zaznaczenie kategorii postów.

Uzyskaj identyfikator nowej kategorii

 USTAW @nowakategoriaID = (
    	SELECT t.term_id FROM wp_terms t WHERE t.name='Inspiracje'
);

Sprawdź wartość @newCategoryID :

Pobierz nowy identyfikator kategorii, a następnie przenieś do niego posty po zbiorczym usunięciu zaznaczenia kategorii „Bez kategorii”.

Zaktualizuj posty za pomocą list z podanymi identyfikatorami

Najpierw zbuduj polecenie SQL i zapisz je w zmiennej @sqlCmd .

 /* Oczekiwane polecenie przechowywane w zmiennej @sqlCmd:
AKTUALIZUJ wp_term_relationships tr
USTAW tr.term_taxonomy_id = 5
GDZIE tr.object_id IN (131 132 133);

*/
ustaw @sqlCmd = ZŁĄCZ (
    	'AKTUALIZUJ wp_term_relationships tr',
	'SET tr.term_taxonomy_id = ', @newCategoryID , ' ',
	'GDZIE tr.object_id IN (', @listID , ');'
);

Po drugie, zweryfikuj to:

Sprawdź polecenie SQL, aby zaktualizować posty z podanymi listami identyfikatorów.

Na koniec wydaj polecenia SQL zapisane w zmiennej @sqlCmd , używając poniższych instrukcji:

 PRZYGOTOWANIE instrukcji z @sqlCmd;
ZESTAW SQL_SAFE_UPDATES = 0;
WYKONAJ stmt;
ZESTAW SQL_SAFE_UPDATES = 1;
ZWOLNIJ PRZYDZIELENIE PRZYGOTOWANIA INSTRUKCJI;

Oto wynik:

Wynik zbiorczego odznaczenia kategorii dla postów bez wtyczki.

Ostatnie słowa

Istnieje wiele sposobów zbiorczego usunięcia zaznaczenia kategorii dla postów w witrynach WordPress. Używając wtyczek do interakcji za pośrednictwem interfejsu internetowego lub używając poleceń SQL, aby mieć bezpośredni wpływ na bazę danych WordPress, operatorzy powinni zrozumieć, jakie są istotne obiekty, które są modyfikowane.

Mamy nadzieję, że ten artykuł daje jeszcze jedną możliwość zbiorczego usunięcia zaznaczenia kategorii dla postów. Aby uzyskać więcej przydatnych technik w WordPressie, śledźmy nasze nadchodzące artykuły!

Jeśli chcesz użyć wtyczki do łatwiejszego zbiorczego usunięcia zaznaczenia kategorii dla postów, zapoznaj się z tym artykułem.