Problema cu get_page_by_path() folosind cu WP_Query (WordPress, Interogare Wp, Dezvoltarea Temei)

Zahid Hossain a intrebat.
a intrebat.

Primesc o eroare atunci când folosesc get_page_by_path() cu WP_Query într-o clasă php. Eu folosesc after_switch_theme și switch_theme în clasa respectivă. Și în timp ce tema este activată, atunci totul este în regulă, așa cum era de așteptat. Dar problema este că, în timp ce schimb tema, atunci browserul îmi arată o eroare.

Eroare fatală capturabilă: Object of class WP_Query could not be converted to string in C:wampwwwwordpress-theme-testwp-includespost.php on line 4470

Încerc să-mi dau seama de eroare`

public function theme_deactivation() {
    $pages = array( 'member-login', 'member-account', 'member-register', 'member-password-lost', 'member-password-reset' );

    foreach ( $pages as $slug ) {
        $query = new WP_Query( 'pagename=' . $slug );

        $page = get_page_by_path( $query );
        wp_delete_post( $page->ID, true );
    }
}

Și cred că, principala problemă este get_page_by_path(). Primul parametru necesar este $page_path (șir de caractere) iar WP_Query este un obiect. Iar eroarea spune WP_Query nu a putut fi convertit în șir de caractere (pentru get_page_by_path())

Există vreo modalitate de a rezolva problema???? Mulțumesc.

1 răspunsuri
Jacob Peattie

Nu are niciun sens să încerci să treci rezultatul unei interogări către get_page_by_path(). Punctul de WP_Query este de a interoga pentru o selecție de posturi pe baza unor criterii date, în timp ce get_page_by_path() este pentru a prelua o singură postare specifică pe baza căii sale. Nu există niciun motiv pentru care ar trebui să le folosiți împreună.

Dacă doriți să ștergeți posturile pe baza slug-ului lor, atunci nu aveți nevoie de o interogare:

$pages = array( 'member-login', 'member-account', 'member-register', 'member-password-lost', 'member-password-reset' );

foreach ( $pages as $slug ) {
    $page = get_page_by_path( $slug );

    if ( $page ) {
        wp_delete_post( $page->ID, true );
    }
}

Comentarii

  • Vă mulțumim pentru răspuns. Permiteți-mi să vă explic de ce am nevoie să interoghez posturile. Am nevoie să interoghez posturile înainte de a le șterge, dacă posturile respective există, atunci le șterg. –  > Por Zahid Hossain.
  • Nu este nevoie să interoghezi pentru a face acest lucru, verifică doar dacă get_page_by_path() returnează un rezultat. Voi actualiza răspunsul meu. –  > Por Jacob Peattie.
  • Mulțumesc foarte mult, Jacob. –  > Por Zahid Hossain.