как получить это значение из базы данных MySQL - PullRequest
0 голосов
/ 26 июня 2019

Я делаю сайт WordPres. Я пытаюсь получить значение из базы данных MySQL. На самом деле мне удалось получить большую ценность. но это так сложно. Например; в БД есть значение. его meta_key => 'th_room_price' и meta_value => '499' Затем я создаю шорткод с meta_key и получаю meta_value.

Но теперь есть еще одно очень сложное значение. его meta_key => mphb_season_prices и meta_value => (это ниже) Здесь 12 отдельных цен, и я не знаю, как я могу получить каждую цену отдельно. Есть кто-то, кто может помочь?

это значения виллы в БД;

('meta_id' => '3307','post_id' => '426','meta_key' => 'mphb_season_prices','meta_value' => 'a:12:{i:0;a:2:{s:6:"season";s:3:"252";s:5:"price";a:4:{s:7:"periods";a:1:{i:0;i:1;}s:6:"prices";a:1:{i:0;d:422;}s:17:"enable_variations";b:0;s:10:"variations";a:0:{}}}i:1;a:2:{s:6:"season";s:3:"253";s:5:"price";a:4:{s:7:"periods";a:1:{i:0;i:1;}s:6:"prices";a:1:{i:0;d:422;}s:17:"enable_variations";b:0;s:10:"variations";a:0:{}}}i:2;a:2:{s:6:"season";s:3:"254";s:5:"price";a:4:{s:7:"periods";a:1:{i:0;i:1;}s:6:"prices";a:1:{i:0;d:422;}s:17:"enable_variations";b:0;s:10:"variations";a:0:{}}}i:3;a:2:{s:6:"season";s:3:"255";s:5:"price";a:4:{s:7:"periods";a:1:{i:0;i:1;}s:6:"prices";a:1:{i:0;d:493;}s:17:"enable_variations";b:0;s:10:"variations";a:0:{}}}i:4;a:2:{s:6:"season";s:3:"256";s:5:"price";a:4:{s:7:"periods";a:1:{i:0;i:1;}s:6:"prices";a:1:{i:0;d:493;}s:17:"enable_variations";b:0;s:10:"variations";a:0:{}}}i:5;a:2:{s:6:"season";s:3:"257";s:5:"price";a:4:{s:7:"periods";a:1:{i:0;i:1;}s:6:"prices";a:1:{i:0;d:708;}s:17:"enable_variations";b:0;s:10:"variations";a:0:{}}}i:6;a:2:{s:6:"season";s:3:"258";s:5:"price";a:4:{s:7:"periods";a:1:{i:0;i:1;}s:6:"prices";a:1:{i:0;d:893;}s:17:"enable_variations";b:0;s:10:"variations";a:0:{}}}i:7;a:2:{s:6:"season";s:3:"259";s:5:"price";a:4:{s:7:"periods";a:1:{i:0;i:1;}s:6:"prices";a:1:{i:0;d:893;}s:17:"enable_variations";b:0;s:10:"variations";a:0:{}}}i:8;a:2:{s:6:"season";s:3:"260";s:5:"price";a:4:{s:7:"periods";a:1:{i:0;i:1;}s:6:"prices";a:1:{i:0;d:708;}s:17:"enable_variations";b:0;s:10:"variations";a:0:{}}}i:9;a:2:{s:6:"season";s:3:"261";s:5:"price";a:4:{s:7:"periods";a:1:{i:0;i:1;}s:6:"prices";a:1:{i:0;d:565;}s:17:"enable_variations";b:0;s:10:"variations";a:0:{}}}i:10;a:2:{s:6:"season";s:3:"262";s:5:"price";a:4:{s:7:"periods";a:1:{i:0;i:1;}s:6:"prices";a:1:{i:0;d:465;}s:17:"enable_variations";b:0;s:10:"variations";a:0:{}}}i:11;a:2:{s:6:"season";s:3:"263";s:5:"price";a:4:{s:7:"periods";a:1:{i:0;i:1;}s:6:"prices";a:1:{i:0;d:422;}s:17:"enable_variations";b:0;s:10:"variations";a:0:{}}}}')

Кстати, это один из моих коротких номеров;

function fiyat_shortcode_function() {
$cekilen_deger = get_post_meta( get_the_ID(), 'th_room_price', true );
$var = $cekilen_deger;
return $var;
}
add_shortcode( 'villa_fiyat', 'fiyat_shortcode_function' );

РЕДАКТИРОВАТЬ- окончательный код; (все еще не работает)

function fiyatlar_shortcode_function() {
$var    = get_post_meta( get_the_ID(), 'mphb_season_prices', true);
$var    = unserialize($var);
$season = 252; // 252 january, 253 february, 254 march...

   $foo = array_column($var, 'price', 'season');

}          

print_r($foo[$season]['prices'][0]);

add_shortcode( 'fiyat_tablosu', 'fiyatlar_shortcode_function' );

- Изменить 4

function fiyatlar_shortcode_function() {
$var    = get_post_meta( get_the_ID(), 'mphb_season_prices', true);
$var    = unserialize($var);

return $var; 
}

add_shortcode( 'fiyat_tablosu', 'fiyatlar_shortcode_function' );

- Изменить 5

function fiyatlar_shortcode_function() {
$va_form = get_post_meta( get_the_ID(), 'mphb_season_prices');
var_dump($va_form);
}
add_shortcode( 'fiyat_tablosu', 'fiyatlar_shortcode_function' );

And Edit 5 Output: array (0) {}

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

Вот, пожалуйста:

function fiyatlar_shortcode_function() {
    $post_id = get_the_ID(); //get ID of post shortcode is embedded in
    $var = get_post_meta( $post_id, 'mphb_season_prices', true ); //retrieve as single
    var_dump($var);
}

add_shortcode( 'fiyat_tablosu', 'fiyatlar_shortcode_function' );

Вы были очень близки, так как я сказал, что WordPress не будет сериализироваться для вас, когда вы используете get_post_meta, нет необходимости делать это самостоятельно.

Причина этой ошибки

Предупреждение: unserialize () ожидает, что параметр 1 будет строкой, массив указан в / home

Это потому, что WordPress уже не сериализовал данные в массив.

Скорее всего, вы захотите, чтобы аргумент 3 был истинным, иначе неселизированные данные будут помещены в дополнительный массив. Например:

 //serialized data (something like this)
 a:1:{s:3:"foo";s:3:"bar";}

 //Original data for example
 ["foo" => "bar"]

 //3rd arg true
 ["foo" => "bar"]

 //default OR 3rd arg false -- extra array
 [["foo" => "bar"]]

Или что-то в этом роде.

Да, и не забудьте добавить return $var; обратно в ... \ (0.o) /

0 голосов
/ 04 июля 2019

код, который я сейчас использую;

function fiyatlar_shortcode_function() {
$post_id = 1182;
$var = get_post_meta( $post_id, 'mphb_season_prices' );
var_dump($var);
}

add_shortcode( 'fiyat_tablosu', 'fiyatlar_shortcode_function' );

и вывод;

array(1) { [0]=> array(12) { [0]=> array(2) { ["season"]=> string(3) "252" ["price"]=> array(4) { ["periods"]=> array(1) { [0]=> int(1) } ["prices"]=> array(1) { [0]=> float(1070) } ["enable_variations"]=> bool(false) ["variations"]=> array(0) { } } } [1]=> array(2) { ["season"]=> string(3) "253" ["price"]=> array(4) { ["periods"]=> array(1) { [0]=> int(1) } ["prices"]=> array(1) { [0]=> float(1070) } ["enable_variations"]=> bool(false) ["variations"]=> array(0) { } } } [2]=> array(2) { ["season"]=> string(3) "254" ["price"]=> array(4) { ["periods"]=> array(1) { [0]=> int(1) } ["prices"]=> array(1) { [0]=> float(1070) } ["enable_variations"]=> bool(false) ["variations"]=> array(0) { } } } [3]=> array(2) { ["season"]=> string(3) "255" ["price"]=> array(4) { ["periods"]=> array(1) { [0]=> int(1) } ["prices"]=> array(1) { [0]=> float(1070) } ["enable_variations"]=> bool(false) ["variations"]=> array(0) { } } } [4]=> array(2) { ["season"]=> string(3) "256" ["price"]=> array(4) { ["periods"]=> array(1) { [0]=> int(1) } ["prices"]=> array(1) { [0]=> float(1070) } ["enable_variations"]=> bool(false) ["variations"]=> array(0) { } } } [5]=> array(2) { ["season"]=> string(3) "257" ["price"]=> array(4) { ["periods"]=> array(1) { [0]=> int(1) } ["prices"]=> array(1) { [0]=> float(1570) } ["enable_variations"]=> bool(false) ["variations"]=> array(0) { } } } [6]=> array(2) { ["season"]=> string(3) "258" ["price"]=> array(4) { ["periods"]=> array(1) { [0]=> int(1) } ["prices"]=> array(1) { [0]=> float(1715) } ["enable_variations"]=> bool(false) ["variations"]=> array(0) { } } } [7]=> array(2) { ["season"]=> string(3) "259" ["price"]=> array(4) { ["periods"]=> array(1) { [0]=> int(1) } ["prices"]=> array(1) { [0]=> float(1715) } ["enable_variations"]=> bool(false) ["variations"]=> array(0) { } } } [8]=> array(2) { ["season"]=> string(3) "260" ["price"]=> array(4) { ["periods"]=> array(1) { [0]=> int(1) } ["prices"]=> array(1) { [0]=> float(1215) } ["enable_variations"]=> bool(false) ["variations"]=> array(0) { } } } [9]=> array(2) { ["season"]=> string(3) "261" ["price"]=> array(4) { ["periods"]=> array(1) { [0]=> int(1) } ["prices"]=> array(1) { [0]=> float(1070) } ["enable_variations"]=> bool(false) ["variations"]=> array(0) { } } } [10]=> array(2) { ["season"]=> string(3) "262" ["price"]=> array(4) { ["periods"]=> array(1) { [0]=> int(1) } ["prices"]=> array(1) { [0]=> float(1070) } ["enable_variations"]=> bool(false) ["variations"]=> array(0) { } } } [11]=> array(2) { ["season"]=> string(3) "263" ["price"]=> array(4) { ["periods"]=> array(1) { [0]=> int(1) } ["prices"]=> array(1) { [0]=> float(1070) } ["enable_variations"]=> bool(false) ["variations"]=> array(0) { } } } } }

, если добавить функцию unserialize;

function fiyatlar_shortcode_function() {
$post_id = 426;
$var = get_post_meta( $post_id, 'mphb_season_prices');
$var = unserialize ($var);   
var_dump($var);
}

add_shortcode( 'fiyat_tablosu', 'fiyatlar_shortcode_function' );

вывод;

bool(false)
Warning: unserialize() expects parameter 1 to be string, array given in /home...

если я использую «return» вместо «var_dump», то вывод будет пустым и выдаст то же, что и выше. Предупреждение.

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