web-dev-qa-db-ja.com

文字列をwpdbの投稿IDと比較し、一致が見つかった場合は処理を行います。

特定の値を比較および変更するために、wpdbと連携するための手助けを探しています。私はmysqlの取り扱いに非常に初心者ですので、私は本当にこの問題についての助けに感謝します!

私がやりたいのは、wp dbを調べて、$page_idと同じIDの投稿を探すことです。投稿が見つかったら、menu_orderの値を確認し、それを$page_orderと比較します。それらが同じであれば何もしませんが、それらが一致しない場合はmenu_order$page_orderの値に設定する必要があります。

これが疑似コードです。

$page_id = 45;
$page_order = 1;

if(post_id == $page_id) {
    if(menu_order != $page_order) {
        set menu_order to $page_order

        switch($page_order) {
        case "1":
            set post meta "color_dropdown" as "pink"
                if have child pages set post meta "color_dropdown" as "pink" to them aswell
            break;
        }
    }
}

すべて助けて感謝します!

ありがとう

1
INT

これは私が使用してしまったものです、私は別のアプローチを使用したので私は子ページにメタ値を適用する必要がないことがわかった。

うまくいけば、それは誰かに役立ちます。

$row = $wpdb->get_row("SELECT * FROM wp_posts WHERE ID ='$post_id'");
$new_order = $order[$page['depth']];
$new_order = $wpdb->escape($new_order);
$current_order = $row->menu_order;

if($current_order != $new_order) {
    switch ($new_order) {
        case "1":
            $color = 'pink';
            break;
        case "2":
            $color = 'green';
            break;
        case "3":
            $color = 'turquoise';
            break;
        case "4":
            $color = 'brown';
            break;
        case "5":
            $color = 'orange';
            break;
        case "6":
            $color = 'pink';
            break;
        case "7":
            $color = 'green';
            break;
        case "8":
            $color = 'turquoise';
            break;
        case "9":
            $color = 'brown';
            break;
        }
        $color = $wpdb->escape($color);
        $post_id = $wpdb->escape($post_id);
        $wpdb->query("UPDATE wp_postmeta SET meta_value = '$color' WHERE post_id = '$post_id' AND meta_key = 'color_dropdown'")
}
0
INT