在Wordpress中选择框,自定义字段和自定义帖子类型的帖子排序顺序?

时间:2014-01-28 14:32:39

标签: php mysql wordpress

我想要一个允许用户选择所显示帖子顺序的选择框。 (像按日期/相关性的youtube顺序)

我正在显示自定义帖子类型(产品)列表。我希望用户能够按price&选择订单。 size。 (这些都是自定义字段)。

我编写了这段代码,允许我通过更改下面的默认变量来更改顺序。

// Default variables
$post_type = 'products';
$custom_field = 'size';
$order = ASC; // ASC or DESC

// Find all matching posts in wordpress database
$querystr = "
  SELECT $wpdb->posts.* 
  FROM $wpdb->posts, $wpdb->postmeta
  WHERE $wpdb->posts.ID = $wpdb->postmeta.post_id
  AND $wpdb->posts.post_status = 'publish'
  AND $wpdb->posts.post_type = '$post_type'
  AND $wpdb->postmeta.meta_key = '$custom_field' 
  ORDER BY $wpdb->postmeta.meta_value $order
";

// Get all the posts
$pageposts = $wpdb->get_results($querystr, OBJECT);

我现在需要让公众用选择框更改默认变量,但我不知道如何。

<form method="post">
  <select name="custom_field_choice">
    <option value="size">Size</option>      
    <option value="price">Price</option>
  </select>
  <input type="submit" value="order_select" />
</form>

是否可以允许用户使用选择框更改php变量?如果没有,最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

尝试将代码更改为从http post请求接收变量,例如

// Default variables
$post_type = 'products';
$custom_field = 'size';
$order = ASC; // ASC or DESC
$orderField = $post->custom_field_choice;

// Find all matching posts in wordpress database
$querystr = "
  SELECT $wpdb->posts.* 
  FROM $wpdb->posts, $wpdb->postmeta
  WHERE $wpdb->posts.ID = $wpdb->postmeta.post_id
  AND $wpdb->posts.post_status = 'publish'
  AND $wpdb->posts.post_type = '$post_type'
  AND $wpdb->postmeta.meta_key = '$custom_field' 
  ORDER BY $orderField $order
";

// Get all the posts
$pageposts = $wpdb->get_results($querystr, OBJECT);

选项的值sizeprice必须是数据库表上的列名。