Пользовательские поля WordPress - поле таблицы - запрос сообщений по значению строк таблицы - PullRequest
2 голосов
/ 07 ноября 2019

Я хочу создать таблицу с настраиваемыми полями в WordPress. Это выглядит примерно так:

+---------------------------------------------+
|  company  |          |          |           |
|           |  field1  |  field2  |   Field3  | 
|           |          |          |           | 
+----+-----------+----------+----------+------+
| 56        | 5        | 55       |  58       | 
+----+-----------+----------+-- -------+------+
| 888       | 6        | 88       |  55       | 
+----+-----------+----------+-- -------+------+
| 558       | 88       |  2       |  150      |
+----+-----------+----------+----------+------+

Мне нужно создать фильтр для загрузки списка сообщений, где:

"company" == 888
"field1" <= 100 &&
"field2" >= 20 &&
"field3" >= 40

Например, в этом случае сообщение, которое имеет следующие значения (как таблица) будет упомянуто в этом списке. В таблице может быть неограниченное количество или строк.

Если бы было только одно поле с одним значением, я бы сделал что-то вроде этого:

$args = array(
    'numberposts' => -1,
    'post_type' => 'company',
    'meta_query' => array(
        array(
            'key' => $key_name,
            'value' => 0,
            'compare' => '>'
        )
    )
);

Я не могу найти способзапросить эти данные в таблице таким образом? Есть? Был бы очень признателен за некоторую помощь.

РЕДАКТИРОВАТЬ:

Она это поле костюм, который я создал. Я сделал это как репитер. Одна важная вещь: Мне нужно найти компанию, где все условия выполняются на одной строке (строке).

[
    {
        "key": "group_5dcbf625e861c",
        "title": "Product search params (copy)",
        "fields": [
            {
                "key": "field_5dcbf62629ce7",
                "label": "product search by param active",
                "name": "product_search_by_param_active",
                "type": "true_false",
                "instructions": "Please choose true to activate this option",
                "required": 1,
                "conditional_logic": 0,
                "wrapper": {
                    "width": "",
                    "class": "",
                    "id": ""
                },
                "message": "If not checked, search engine won't show this section on website",
                "default_value": 0,
                "ui": 0,
                "ui_on_text": "",
                "ui_off_text": ""
            },
            {
                "key": "field_5dcbf6262a106",
                "label": "product params values",
                "name": "product_params_values",
                "type": "repeater",
                "instructions": "",
                "required": 0,
                "conditional_logic": [
                    [
                        {
                            "field": "field_5dcbf62629ce7",
                            "operator": "==",
                            "value": "1"
                        }
                    ]
                ],
                "wrapper": {
                    "width": "",
                    "class": "",
                    "id": ""
                },
                "collapsed": "",
                "min": 0,
                "max": 0,
                "layout": "table",
                "button_label": "",
                "sub_fields": [
                    {
                        "key": "field_5dcbf626543aa",
                        "label": "param value 1",
                        "name": "param_value_1",
                        "type": "text",
                        "instructions": "",
                        "required": 0,
                        "conditional_logic": 0,
                        "wrapper": {
                            "width": "",
                            "class": "",
                            "id": ""
                        },
                        "default_value": "",
                        "placeholder": "",
                        "prepend": "",
                        "append": "",
                        "maxlength": ""
                    },
                    {
                        "key": "field_5dcbf6265478f",
                        "label": "param value 2",
                        "name": "param_value_2",
                        "type": "text",
                        "instructions": "",
                        "required": 0,
                        "conditional_logic": 0,
                        "wrapper": {
                            "width": "",
                            "class": "",
                            "id": ""
                        },
                        "default_value": "",
                        "placeholder": "",
                        "prepend": "",
                        "append": "",
                        "maxlength": ""
                    },
                    {
                        "key": "field_5dcbf62654c14",
                        "label": "param value 3",
                        "name": "param_value_3",
                        "type": "text",
                        "instructions": "",
                        "required": 0,
                        "conditional_logic": 0,
                        "wrapper": {
                            "width": "",
                            "class": "",
                            "id": ""
                        },
                        "default_value": "",
                        "placeholder": "",
                        "prepend": "",
                        "append": "",
                        "maxlength": ""
                    },
                    {
                        "key": "field_5dcbf62654fc1",
                        "label": "param value 4",
                        "name": "param_value_4",
                        "type": "text",
                        "instructions": "",
                        "required": 0,
                        "conditional_logic": 0,
                        "wrapper": {
                            "width": "",
                            "class": "",
                            "id": ""
                        },
                        "default_value": "",
                        "placeholder": "",
                        "prepend": "",
                        "append": "",
                        "maxlength": ""
                    },
                    {
                        "key": "field_5dcbf62655398",
                        "label": "param value 5",
                        "name": "param_value_5",
                        "type": "text",
                        "instructions": "",
                        "required": 0,
                        "conditional_logic": 0,
                        "wrapper": {
                            "width": "",
                            "class": "",
                            "id": ""
                        },
                        "default_value": "",
                        "placeholder": "",
                        "prepend": "",
                        "append": "",
                        "maxlength": ""
                    }
                ]
            }
        ],
        "location": [
            [
                {
                    "param": "post_type",
                    "operator": "==",
                    "value": "product"
                }
            ]
        ],
        "menu_order": 0,
        "position": "normal",
        "style": "default",
        "label_placement": "top",
        "instruction_placement": "label",
        "hide_on_screen": "",
        "active": 1,
        "description": ""
    }
]

Редактировать 2:

Есть другой способ. Создать поле таблицы. Вот поле:

    {
        "key": "field_5dcdf5a673fa7",
        "label": "product search by param settings",
        "name": "product_search_by_param_settings",
        "type": "table",
        "instructions": "",
        "required": 0,
        "conditional_logic": 0,
        "wrapper": {
            "width": "",
            "class": "",
            "id": ""
        },
        "use_header": 0,
        "use_caption": 2
    }

И вот как оно сохраняется:

a:5:{s:5:"acftf";a:1:{s:1:"v";s:5:"1.3.9";}s:1:"p";a:2:{s:1:"o";a:1:{s:2:"uh";i:0;}s:2:"ca";s:0:"";}s:1:"c";a:5:{i:0;a:1:{s:1:"p";s:0:"";}i:1;a:1:{s:1:"p";s:0:"";}i:2;a:1:{s:1:"p";s:0:"";}i:3;a:1:{s:1:"p";s:0:"";}i:4;a:1:{s:1:"p";s:0:"";}}s:1:"h";a:5:{i:0;a:1:{s:1:"c";s:0:"";}i:1;a:1:{s:1:"c";s:0:"";}i:2;a:1:{s:1:"c";s:0:"";}i:3;a:1:{s:1:"c";s:0:"";}i:4;a:1:{s:1:"c";s:0:"";}}s:1:"b";a:5:{i:0;a:5:{i:0;a:1:{s:1:"c";s:4:"ffsd";}i:1;a:1:{s:1:"c";s:5:"hjkhk";}i:2;a:1:{s:1:"c";s:4:"hkjh";}i:3;a:1:{s:1:"c";s:6:"hkjhkj";}i:4;a:1:{s:1:"c";s:4:"fdjk";}}i:1;a:5:{i:0;a:1:{s:1:"c";s:6:"hkjhjk";}i:1;a:1:{s:1:"c";s:5:"hkjhk";}i:2;a:1:{s:1:"c";s:6:"hkjhkj";}i:3;a:1:{s:1:"c";s:6:"hkjhkj";}i:4;a:1:{s:1:"c";s:4:"hkhk";}}i:2;a:5:{i:0;a:1:{s:1:"c";s:6:"hkhkjh";}i:1;a:1:{s:1:"c";s:5:"hkjhk";}i:2;a:1:{s:1:"c";s:5:"hkjhk";}i:3;a:1:{s:1:"c";s:6:"hkjhkj";}i:4;a:1:{s:1:"c";s:5:"hkjhk";}}i:3;a:5:{i:0;a:1:{s:1:"c";s:5:"hkjhk";}i:1;a:1:{s:1:"c";s:6:"hkjhkj";}i:2;a:1:{s:1:"c";s:6:"hkjhkj";}i:3;a:1:{s:1:"c";s:6:"hkjhkj";}i:4;a:1:{s:1:"c";s:5:"hkkhk";}}i:4;a:5:{i:0;a:1:{s:1:"c";s:4:"hkhk";}i:1;a:1:{s:1:"c";s:2:"hk";}i:2;a:1:{s:1:"c";s:4:"hkhk";}i:3;a:1:{s:1:"c";s:4:"hkhk";}i:4;a:1:{s:1:"c";s:4:"hkhk";}}}}

1 Ответ

1 голос
/ 13 ноября 2019

Мета-запрос может принимать массив условий. В вашем случае вы можете попробовать:

$args = array(
  'numberposts' => -1,
  'post_type' => 'company',
  'meta_query' => array(
   'relation' => 'AND', // AND is default, you can use OR as well
    array(
      'key' => 'company',
      'value' => 888,
      'compare' => '='
    ),
    array(
      'key' => 'field1',
      'value' => 100,
      'compare' => '<='
    ), array(
      'key' => 'field2',
      'value' => 20,
      'compare' => '>='
    ), array(
      'key' => 'field3',
      'value' => 40,
      'compare' => '>='
    )
  )
);

Вот ссылка, чтобы помочь глубже понять meta_query: https://rudrastyh.com/wordpress/meta_query.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...