如何格式化meta_value 列的jsonpost_meta wordpress中的表,以仅获取正确的值。
我有这样的价值:
$posttype= Mage::helper(\'wordpress\')->getPostType2();
$posttype = explode(\',\',$posttype);
echo \'Post type:\';
echo \'<pre>\';print_r($posttype);
Output:
数组([0]=>a:12:{s:3:“键”;s:19:“字段57bdd83367bb1”;s:5:“标签”;s:4:“类型”;s:4:“名称”;s:4:“类型”;s:4:“类型”;s:4:“选择”;s:6:“选择”;s:12:“说明”;s:0:;s:8:“必需”;s:1:“0”;s:7:“选择”;a:7:{s:7:“文章”;s:9:“博客帖子”;s:9:“博客帖子”;s:16:“艺术家和制作者”制沙工:s:6:“视频”;s:6:“视频”;s:12:“新闻界”;s:12:“新闻界”;s:14:“你知道吗?”;s: 12:“Dod\\u you\\u know”;s: 14:“词汇表A-Z”;s: 8:“词汇表”;}s: 13:“default\\u值”;s: 39:“blog\\u post in\\u the\\u press did\\u you\\u know”;s: 10:“allow\\u null”;s: 1:“0”;s: 8:“多个”;s: 1:“1”;s: 17:“条件逻辑”;a: 3:{s:6:“状态”;s:1:“0”;s:5:“规则”;a:1:{i:0;a:2:{s:5:“字段”;s:4:“空”;s:8:“运算符”;s:2:“=”;}}}s: 8:“allorany”;s: 3:“全部”;}s: 8:“订单号”;i: 0;})
我只需要得到下拉列表中的值
Article
Blog Post
Artists & Makers
<div class="category-list">
<?php // echo $this->__(\'All Types\') ?>
<select id="blogcat">
<option><?php echo $this->__(\'Article Type\') ?></option>
<option value=""><?php echo $this->__(\'All Types..\') ?></option>
<option value="<?php echo $posttype;?>"> </option>
<?php foreach($posttype as $value) { ?>
<?php $namecheck = preg_replace(\'/\\s*/\', \'\', strtolower($value[\'name\']));
if ($value[\'slug\'] != \'artists-and-makers\'&&$namecheck != \'artistsandmakers\') : ?>
<option value="<?php echo $value[\'slug\'];?>"><?php echo $value[\'name\'];?> </option>
<?php echo \'TRUE\';?>
<?php endif; ?>
<?php } ?>
<option value="events"><?php echo $this->__(\'Events\') ?></option>
</select>
</div>
SO网友:SeventhSteel
第1部分-删除双引号/额外字符:
由于输出在某种程度上是可预测的,因此我将尝试以下方法,而不是使用getCapitalleters函数,而不是使用正则表达式:
function strip_cruft( $str ) {
$str = str_replace( \'";s\', \'\', $str );
$str = str_replace( \'"\', \'\', $str );
return $str;
}
第2部分-要输出填充的下拉列表:
使用上述功能并记住在开始和结束标记之间添加一个值:
<?php foreach($posttype as $post) {
$post = strip_cruft( $post ); ?>
<option value="<?php echo esc_attr( $post ); ?>">
<?php echo esc_html( $post ); ?>
</option>
<?php } ?>
如果您希望它们都是小写的,可以使用WordPress的
sanitize_title
作用
SO网友:Jacob Peattie
在你最初的问题中,你有这样的文字
a:12:{s:3:"key";s:19:"field_57bdd83367bb1";s:5:"label"
这不是JSON。这是一个PHP序列化数组。这是用于存储在数据库中的PHP数组的表示形式。它是使用
serialize()
作用如果你想
update_post_meta()
或
update_option()
使用WordPress中的数组值,WordPress将首先序列化数据。当您使用
get_post_meta()
或
get_option()
WordPress将
unserialize()
为您提供数据。
这里的问题是您没有使用WordPress函数检索此数据。您正在使用Mage::helper(\'wordpress\')->getPostType2()
, 这似乎是一个Magento函数。如果您在Magento中使用此数据,那么A.这是错误的论坛,请在Magento论坛中询问您在Magento和B中是否有问题。您需要自己取消序列化数据:
$posttype= Mage::helper(\'wordpress\')->getPostType2();
$posttype = unserialize($posttype);
echo \'Post type:\';
echo \'<pre>\';print_r($posttype);
PS:我将您的问题回滚到了第一个版本,因为这是问题的唯一一个包含解释问题的信息的版本。