我们的网站包含数百种Custom" Incentives"帖子。这些帖子中的每一个都包含一个标题为“#34; Incentive ID"这是一个数字。然后,我们对“推荐激励”"进行PHP / MySQL查询。表格返回逗号分隔的"奖励ID""。我们想要显示一个"奖励"帖子基于以逗号分隔的奖励ID列表。我已经创建了一个PHP短代码脚本,用于查询此处的逗号分隔列表
<?php
global $wpdb;
$user_ID = get_current_user_id();
$sql = <<<SQL
SELECT FK_T_L_INCENTIVES_ID FROM lighting_incentives.WAYPOINT_USER_PICKED WHERE WP_RECOMMENDED = 1 AND FK_USER_ID = $user_ID
SQL;
if (!$sql) { // add this check.
die('Invalid query: ' . mysql_error());
}
$resultset = array();
$rebates = $wpdb->get_results( $sql, ARRAY_A );
foreach($rebates as $data) {
echo $data['FK_T_L_INCENTIVES_ID']. ",";
}
?>
我还创建了一个自定义页面模板,用于填充Wordpress&#34; Incentives&#34;帖子使用wp_query。当我有&#34; Incentives ID&#34;的静态值时,此页面模板很有用。
$args = array(
'meta_key' => 'Incentive ID',
'meta_value' => array(20,21),
'orderby' => 'meta_value_num',
'order' => 'ASC',
'post_type' => 'incentives'
);
// get results
$the_query = new WP_Query( $args );
// The Loop
?>
<?php if( $the_query->have_posts() ): ?>
<ul style="list-style:decimal;">
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
<?php wp_reset_query(); // Restore global post data stomped by the_post(). ?>
但是,我在尝试插入以逗号分隔的&#34; Incentives ID&#34;&#34;进入wp_query args&#34; meta_value
&#34;领域。我已经尝试了所有我能想到的东西,但我没有尝试过。我试过这个
$gg = print do_shortcode("[php snippet=35]");
$args = array(
'meta_key' => 'Incentive ID',
'meta_value' => array($gg),
'orderby' => 'meta_value_num',
'order' => 'ASC',
'post_type' => 'incentives'
);
此
$gg = print do_shortcode("[php snippet=35]");
$args = array(
'meta_key' => 'Incentive ID',
'meta_value' => $gg,
'orderby' => 'meta_value_num',
'order' => 'ASC',
'post_type' => 'incentives'
);
此
$args = array(
'meta_key' => 'Incentive ID',
'meta_value' => print do_shortcode("[php snippet=35]"),
'orderby' => 'meta_value_num',
'order' => 'ASC',
'post_type' => 'incentives'
);
但这些选项都没有奏效。它们会导致致命错误或空白页面。我究竟做错了什么!?!?!?!任何人都可以给我的任何帮助都会得到很多赞赏!!!
答案 0 :(得分:4)
您需要提供一个Incentices ID数组而不是字符串。
当有多个值时,您应该使用meta_query
来获取包含自定义字段的帖子。
$meta_values = array(value1, value2, /* .. */); // not a string
$args = array(
'post_type' => 'incentives',
'meta_key' => 'Incentive ID',
'meta_value' => array(),
'orderby' => 'meta_value',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'Incentive ID',
'value' => $meta_values,
'compare' => 'IN'
)
)
);