WordPress

woocommerce offtopic — Zaktualizuj listę produktów do polecanych, jeśli produkt ma wartość meta (Mysql nie wpquery)

  • 26 stycznia, 2020
  • 3 min read
woocommerce offtopic — Zaktualizuj listę produktów do polecanych, jeśli produkt ma wartość meta (Mysql nie wpquery)


Ponieważ polecany produkt woo 3 to nazwa i ślimak taksonomii „widoczność_produktu”.

Muszę zaktualizować wszystkie produkty z tą samą meta_wartością zawartą na liście do „polecane”.

Moje produkty mają meta_key = 'product_cip’

Moja lista cip do porównania z „product_cip” to (1234657,1263709,4563832,837472) itp.

Mogę wybrać wszystkie polecane produkty w ten sposób, ale nie wiem, jak zaktualizować:

SELECT post_title, ID FROM wp_posts
INNER JOIN wp_postmeta wm ON (wm.post_id = wp_posts.ID)
INNER JOIN wp_term_relationships wtr ON (wp_posts.ID = wtr.object_id)
INNER JOIN wp_term_taxonomy wtt ON (wtr.term_taxonomy_id = wtt.term_taxonomy_id)
INNER JOIN phiz_terms wt ON (wt.term_id = wtt.term_id) AND ((wtt.taxonomy = 'product_visibility' AND  wt.slug = 'featured'))
    WHERE post_type="product" AND post_status="publish"

Dzięki,

EDYTOWAĆ:

global $wpdb;

// Select all products needed to be updated as 'featured'
    $q = 'SELECT wp_posts.ID ';
    $q .= 'FROM wp_posts ';

// Attach wp_postmeta table
    $q .= 'JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) ';
// Attach taxonomy and term tables
    $q .= 'JOIN wp_term_relationships ON ( wp_posts.ID = wp_term_relationships.object_id ) ';
    $q .= 'JOIN wp_term_taxonomy ON ( wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id ) ';
    $q .= 'JOIN wp_terms ON ( wp_term_taxonomy.term_id = wp_terms.term_id ) ';

// WHERE statements
    $q .= 'WHERE ';
// Post should be published
    $q .= 'wp_posts.post_status =  "publish" ';

    $q .= 'AND ';
// Post should have either product as post_type
    $q .= 'wp_posts.post_type =  "product" ';

    $q .= 'AND ';
// Post should have meta_key = product_cip
    $q .= '(';
    $q .= 'wp_postmeta.meta_key =  "product_cip" ';
    $q .= 'AND ';
    $q .= 'wp_postmeta.meta_value IN ("3664592000014","3401097399423","4015630064779","3400941662003","3400941631245","3401321104311","3401051049166","3400936760578","3400938341836","3401021104543","3400939035765","4015630057009","3401097592640","3401060246723","3662042003295","3401096745795","3401097024363","3401099724896","3400935709042","3400935167156","3401021104482","3400936751934","3401096745856","3400936348288","3400934965852","3400922096612","3400933043445","3664490000031","3400932897162","7323190196562","3400936666795","3400939472898") ';
    $q .= ')';

    $wpdb->get_results($q);

Dzięki temu otrzymuję produkt, który wymaga aktualizacji, jak zmienić ten wynik na polecany produkt?

Warto przeczytać!  Podczas tworzenia niestandardowej wiadomości e-mail nie mogę wstawić więcej niż jednego obrazu

EDYCJA 2:

function update_products_tofeatured_for_home($atts)
{
    global $wpdb;

// Select all products needed to be updated as 'featured'
    $q = 'SELECT wp_posts.ID ';
    $q .= 'FROM wp_posts ';

// Attach wp_postmeta table
    $q .= 'JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) ';
// Attach taxonomy and term tables
    $q .= 'JOIN wp_term_relationships ON ( wp_posts.ID = wp_term_relationships.object_id ) ';
    $q .= 'JOIN wp_term_taxonomy ON ( wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id ) ';
    $q .= 'JOIN wp_terms ON ( wp_term_taxonomy.term_id = wp_terms.term_id ) ';

// WHERE statements
    $q .= 'WHERE ';
// Post should be published
    $q .= 'wp_posts.post_status =  "publish" ';

    $q .= 'AND ';
// Post should have either product as post_type
    $q .= 'wp_posts.post_type =  "product" ';

    $q .= 'AND ';
// Post should have meta_key = product_cip
    $q .= '(';
    $q .= 'wp_postmeta.meta_key =  "product_cip" ';
    $q .= 'AND ';
    $q .= 'wp_postmeta.meta_value IN ("3664592000014","3401097399423","4015630064779","3400941662003","3400941631245","3401321104311","3401051049166","3400936760578","3400938341836","3401021104543","3400939035765","4015630057009","3401097592640","3401060246723","3662042003295","3401096745795","3401097024363","3401099724896","3400935709042","3400935167156","3401021104482","3400936751934","3401096745856","3400936348288","3400934965852","3400922096612","3400933043445","3664490000031","3400932897162","7323190196562","3400936666795","3400939472898") ';
    $q .= ')';

    $products = $wpdb->get_results($q);

    //var_dump($products);

    foreach ($products as $prd)
    {
        $term_taxonomy_ids = wp_set_object_terms( $prd, 'featured', 'product_visibility' );

        if ( is_wp_error( $term_taxonomy_ids ) ) {
            // There was an error somewhere and the terms couldn't be set.
        } else {
            // Success!
        }
    }
}

Jeszcze nie przetestowane.

Warto przeczytać!  WordPress - Lista podkategorii i podkategorii podrzędnych, z postami


Źródło