窗口小部件中断定制器的WP_QUERY表单方法

时间:2015-01-21 作者:yivi

在我的一个小部件的“form”方法中,我进行了一个查询,为用户提供一些帖子供选择,如下所示:

<?php
    $products = new WP_Query( array(
        \'post_type\'      => \'ys_product\',
        \'order\'          => \'ASC\',
        \'orderby\'        => \'title\',
        \'meta_query\'     => array(
            array(
                \'key\'   => \'ys_product_status\',
                \'value\' => \'ok\',
            )
        ),
        \'posts_per_page\' => - 1
    ) );


    if ( $products->have_posts() ) {
        while ( $products->have_posts() ) : $products->the_post();
            $product = array(
                \'name\' => the_title_attribute( array( \'echo\' => FALSE ) ),
                \'ID\'   => get_the_ID(),
            );

            $prod_array[] = $product;
        endwhile;
        wp_reset_postdata();
    }
出于某种原因,使用该代码或多或少会出错。小部件工作,wp\\u查询填充适当的select,小部件显示并可以通过常规的小部件页面或自定义程序进行配置。

但是

出于某种原因,在customizer中,此小部件应用了以下css规则:

.customize-control-widget_form:not(.widget-rendered) {
  opacity. 0.5
}
这当然会反过来产生:widget with opacity changed

此外,在customizer中,我不能再使用“添加新小部件”按钮,除非我删除此小部件(它在customizer.js中出现错误,抱怨TypeError: control is undefined.

一切似乎都正常,但显然有些地方出了问题,因为我破坏了Customizer。有人知道这是怎么回事吗?

Update: 最后,我通过$wpdb将WP\\U查询替换为sql查询,现在一切正常。尽管如此,我还是想知道为什么它不能像它应该写的那样工作:()

谢谢和问候。(WP 4.1)

1 个回复
SO网友:Adrian

我在查询帖子和页面时遇到了完全相同的问题,但在我的自定义小部件中也存在jetpack公文包帖子类型的问题。

我在使用$query = new WP_Query( $query_args ); 在这两种情况下。对我来说,解决办法是改变$query$query_entries$query_projects. 现在它可以按预期工作了。

我看到你已经在使用$products, 但它可能与您运行的其他查询冲突。试着改变这一点,看看它是否奏效。

UPDATE: 不管怎样,它并没有解决它。如果我关闭定制器并返回它,这些小部件仍然会表现得很奇怪。

结束

相关推荐

Reorder dashboard widgets

我最近试图通过编写插件对仪表板小部件进行重新排序。我做到了这一点:使用以下代码:<?php /* * Plugin Name: Custom Dashboard * Description: Custom dashboard for Avare sites. * Author: Avare * Version: 1.0 */ function sort_dashboard_widgets() { $lef