如何使用鱼猪在自定义字段上设置顺序



我有Wordpress CPT和ACF的事件,它们有一个publish_date(内置(,当它们应该出现在新闻中时,还有一个start_date(这是自定义字段(显示在列表中并在一种日历中排序。

这是我的代码:

public function getEventsCollection()
{
    $collection = Mage::getResourceModel('wordpress/post_collection');
    $collection->addPostTypeFilter('events');
    $collection->setOrderByPostDate();
    $collection->addIsViewableFilter();
    $collection->setPageSize(20);
    $collection->load();
    return $collection;
}

我只能找到setOrderByPostDate(),但没有其他方法可以在自定义字段start_date上为后期收集设置顺序。

start_datepublish_date是相互独立的,有些事件可能会比其他事件更早宣布。

我已经试过了

$collection->setOrder('start_date');

但是我会得到一个SQL错误:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'start_date' in 'order clause', query was: SELECT...

自定义字段"start_date"不是查询的一部分,因此不能用于排序。您可以像这样调试查询:

<?php echo $collection->getSelect() ?>

如果您查看Fishpig_Wordpress的抽象集合文件(app/code/community/Fishpig/Wordpress/Model/Resource/Collection/Abstract.php(,您将看到以下可能对您有用的方法:

public function resetOrderBy();
public function addMetaFieldToSelect($metaKey);
public function addMetaFieldToFilter($metaKey, $filter);
public function addMetaFieldToSort($field, $dir = 'asc');

如果您只想按字段排序,addMetaFieldToSort 看起来像正确的选择,但是如果您检查代码,此方法实际上并没有加入字段,因此这不起作用。您可以执行以下操作:

<?php $collection->resetOrderBy() ?>
<?php $collection->addMetaFieldToSelect('start_date') ?>
<?php $collection->addMetaFieldToSort('start_date', 'desc') ?>

相关内容

  • 没有找到相关文章

最新更新