Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql查询不同的meta_键并分别显示_Mysql_Wordpress_Foreach - Fatal编程技术网

mysql查询不同的meta_键并分别显示

mysql查询不同的meta_键并分别显示,mysql,wordpress,foreach,Mysql,Wordpress,Foreach,我是mysql的新手,我的问题很难描述。Wordpress将大量Posteta存储为包含各种meta_值的各种meta_键。我在试图通过一个特定的meta_键进行查询时遇到了一个问题,但随后却无法显示两个不同的meta_键及其值。这里是我到目前为止,正确显示从一个特定的wordpress类别的所有视频URL <?php $myquery=mysql_query(" SELECT * FROM foy_postmeta AS pm INNER JOIN foy_term_relationsh

我是mysql的新手,我的问题很难描述。Wordpress将大量Posteta存储为包含各种meta_值的各种meta_键。我在试图通过一个特定的meta_键进行查询时遇到了一个问题,但随后却无法显示两个不同的meta_键及其值。这里是我到目前为止,正确显示从一个特定的wordpress类别的所有视频URL

<?php
$myquery=mysql_query("
SELECT * FROM foy_postmeta AS pm
INNER JOIN foy_term_relationships AS tr ON (pm.post_id = tr.object_id)
INNER JOIN foy_posts AS p ON (pm.post_id = p.ID)
WHERE pm.meta_key='video_url'
AND tr.term_taxonomy_id='27'
AND p.post_status='publish'
ORDER BY p.post_date DESC
");

$rows = array();
while($row=mysql_fetch_array($myquery)){
  $rows[] = $row;
}
?>

然后我把它放进html中的行中,它正确地显示了所有的视频标题和它们的路径

   <?php
   foreach( $rows as $row ) {
      <div>my video title: <?php echo $row["post_title"]; ?></div>
      <div>my video url: <?php echo $row["meta_value"]; ?></div>
   }
   ?>
现在,我想做的是保持这个行列表不变,但还要写出另一个meta_键和它的值,类似这样的东西

   <?php
   foreach( $rows as $row ) {
      <div>my video title: <?php echo $row["post_title"]; ?></div>
      <div>my video url: <?php echo $row["meta_value"]; ?></div>
      <div>my video format is: <?php echo $row["meta_value"]; ?></div>
   }
   ?>

但我不确定如何在同一个循环中显示2个meta_值,因为它们在同一个postETA表中有单独的meta_键。

您可以使用wp_查询进行此操作。这是wordpress数据库对帖子的查询,这使得处理帖子时更加容易

例如上述

$args = array(
'post_type' => 'post',
'meta_query' => array(
   array(
       'key' => 'video_url',

   )
),
'tax_query' => array(
    array(
        'taxonomy' => 'your taxonomy name here',
        'field' => 'slug',
        'terms' => 'whatever'
    )
),
'orderby' => 'date',
'order' => 'DESC',
 );

$query= new wp_query($args);
?>

while ( $query->have_posts() ) : $query->the_post(); 
$meta = get_post_meta( $post->ID );
var_dump($meta);

?>
<h2><?php the_title(); ?></h2>
<?php endwhile; ?>
现在,对于每一篇文章,您都可以访问post_meta检查数组var_为键转储了什么


或者,如果您想持久化mysql,请对每一行使用foreach循环,并将id传递给get_post_meta$id;然后,您可以对每一行使用posmeta

我找到了一个虽然有效的解决方案,但我认为还有更好的方法。我删除了查询中的特定meta_键项,以便获取所有meta_键,然后在foreach循环中使用if语句创建我想要显示的特定变量:

<?php
$myquery=mysql_query("
SELECT * FROM foy_postmeta AS pm
INNER JOIN foy_term_relationships AS tr ON (pm.post_id = tr.object_id)
INNER JOIN foy_posts AS p ON (pm.post_id = p.ID)
WHERE tr.term_taxonomy_id='27'
AND p.post_status='publish'
ORDER BY p.post_date DESC
");

$rows = array();
while($row=mysql_fetch_array($myquery)){
  $rows[] = $row;
} 

<?php
  foreach( $rows as $row ) {
    // sets video url and video layout values as variables
    if ($row["meta_key"] == "video_url" ){ $videourl = $row["meta_value"]; }
    if ($row["meta_key"] == "video_layout" ){ $videolayout = $row["meta_value"]; }
    if ($row["meta_key"] == "video_url" ){ 
?>
     <div>my video url: <?php echo $videourl ?></div>
     <div>my video format is: <?php echo $videolayout ?></div>
<?php 
    } 
  }
?>

元值是否与同一帖子相关?是的。所有meta_值都绑定到同一个post。每个帖子的meta_key列中可能有几个meta_键,然后这些meta_键有各自的meta_值。所以我想显示两个meta_键,它们的值都来自同一个post id。有什么想法吗?谢谢你的帮助!谢谢你的回复。get_post_元是有意义的。但非常抱歉,我没有提到我正在使用mysql_查询,因为它实际上是一个页面,不是wordpress站点,但它正在从使用wordpress的数据库中提取数据……非常混乱。对不起!我确实通过删除查询中的特定meta_键来解决问题,这样多个meta_键及其meta_值都将成为查询的一部分。然后我可以使用if语句填充我需要的字段。我会把我的答案贴出来,因为我的版本看起来很混乱。