【问题标题】:Wordpress - get meta data only from "published" articlesWordpress - 仅从“已发布”文章中获取元数据
【发布时间】:2014-06-27 11:57:52
【问题描述】:

我有一个包含帖子元数据的下拉列表:

<form name="search" action="" method="get" class="form-dropdown">
        <select name="city">
        <option>Stadt wählen</option>
        <?php
            $metakey = 'city';
            $counties = $wpdb->query( 
                $wpdb->prepare( 
                    "
                    SELECT DISTINCT     meta_value
                    FROM                $wpdb->postmeta AS pm
                    JOIN                $wpdb->post AS p ON pm.post_id = p.ID
                    WHERE               meta_key = %s
                    AND                 post_status = 'published'
                    ORDER BY            meta_value ASC
                    ",
                    $metakey
                )
            );


            if ($counties) {
            foreach ($counties as $city) {
            echo "<option value=\"" . $city . "\">" . $city . "</option>";

            }
        }
        ?>
        </select>
        <input type="submit" value="Anzeigen" />
    </form>

但是

AND post_status = published

这里似乎是错误的。知道如何仅显示已发布帖子中的元数据吗?我使用插件“FeedWordPress”获取每个 RSS 提要的帖子,他将旧帖子置于“已退休”状态,以便显示。不,我在插件中没有找到将它们放入垃圾箱的选项...

【问题讨论】:

  • post_status 不是 postmeta 表中的字段。您必须使用帖子表创建连接查询
  • 我认为你是对的,但我不知道如何实现这一点。以前?

标签: php wordpress loops metadata


【解决方案1】:

您只是在查询中缺少单引号,因为published 是一个字符串值,而不是另一列。啊,正如@Khushboo 刚刚提到的,post_status 确实是帖子表的一列。所以它必须看起来像这样:

$wpdb->query( 
    $wpdb->prepare( 
        "
        SELECT DISTINCT     meta_value
        FROM                $wpdb->postmeta AS pm
        JOIN                $wpdb->post AS p ON pm.post_id = p.ID
        WHERE               meta_key = %s
        AND                 post_status = 'publish'
        ORDER BY            meta_value ASC
        ",
        $metakey
    )
);

但是为什么不使用其他查询函数,例如 query_posts 和查询参数呢?

【讨论】:

  • 不,这行不通,我认为 Khushboo 是对的,我必须先从帖子中获取表格,然后在获取元数据之前按“帖子状态”过滤。
  • 对。刚看到,已经在更新我的帖子了。现在它应该可以工作了。
  • 用你的代码更新了我的帖子,现在我没有收到任何错误,但下拉菜单是空的......
  • 其实状态是publishnot published(看我的修改)。
  • 您是否尝试过通过 PhpMyAdmin 或类似的方式运行查询?对我来说,这很有效。您确定您的元键是“城市”并且您有已发布帖子的活动行吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-03
  • 1970-01-01
  • 2016-04-17
  • 1970-01-01
  • 2011-12-22
  • 1970-01-01
  • 2011-02-28
相关资源
最近更新 更多