我试图在Wordpress中的Algolia分面搜索中过滤掉一些结果。我想仅向使用特定WP用户角色登录的用户显示某些结果。这是我现在的结果,它没有返回任何结果,但搜索的分页确实显示,所以我知道脚本运行没有错误。我也没有任何控制台错误。
这是我目前来自instantsearch.php的脚本:
<script type="text/html" id="tmpl-instantsearch-hit">
<article itemtype="http://schema.org/Article">
<?php
// Get data
$post_title = '{{{ data._highlightResult.post_title.value }}}';
$aim_of_work = '{{{ data._snippetResult.aim_of_organisations_work.value }}}';
$organisation_region = '{{{ data._highlightResult.organisation_region.value }}}';
?>
<?php
// If user is limited to Americas and the Carribbean
if( in_array('americas', $user_info->roles) ) {
if($organisation_region == 'Americas and the Caribbean') { ?>
<!-- Print Americas Results -->
<div class="ais-hits--content">
<h3 itemprop="name headline"><a href="{{ data.permalink }}" title="{{ data.post_title }}" itemprop="url"><?php echo $post_title; ?></a></h3>
<div class="ais-hits--tags">
<# for (var index in data.taxonomies.post_tag) { #>
<span class="ais-hits--tag">{{{ data._highlightResult.taxonomies.post_tag[index].value }}}</span>
<# } #>
</div>
<div class="excerpt">
<p>
<?php echo $aim_of_work; ?>...
</p>
<p class="text-small">Region: <?php echo $organisation_region; ?></p>
</div>
</div>
<div class="ais-clearfix"></div>
<?php } //END if
} else { ?>
<!-- Print All Results -->
<div class="ais-hits--content">
<h3 itemprop="name headline"><a href="{{ data.permalink }}" title="{{ data.post_title }}" itemprop="url"><?php echo $post_title; ?></a></h3>
<div class="ais-hits--tags">
<# for (var index in data.taxonomies.post_tag) { #>
<span class="ais-hits--tag">{{{ data._highlightResult.taxonomies.post_tag[index].value }}}</span>
<# } #>
</div>
<div class="excerpt">
<p>
<?php echo $aim_of_work; ?>...
</p>
<p class="text-small">Region: <?php echo $organisation_region; ?></p>
</div>
</div>
<div class="ais-clearfix"></div>
<?php } // END if ?>
</article>
</script>
我担心的是我的条件不起作用:if($organisation_region == 'Americas and the Caribbean')
我觉得有更好的方法可以做到这一点,但我会采取任何可行的方式。
/ ** - 更新 - * / 这是我的方面小部件:
/* Region refinement widget */
search.addWidget(
instantsearch.widgets.menu({
container: '#facet-org-region',
attributeName: 'organisation_region',
sortBy: ['isRefined:desc', 'count:desc', 'name:asc'],
limit: 10,
templates: {
header: '<h3 class="widgettitle">Region</h3>'
}
})
);
答案 0 :(得分:2)
您的解决方案似乎将JavaScript代码与PHP混合在一起。
在服务器端解析和执行PHP代码,在浏览器中解析客户端的JavaScript。
在您的示例中,$organisation_region
将始终等于字符串'{{{ data._highlightResult.organisation_region.value }}}'
。
您可能希望将organisation_region
添加为构面,然后对其进行优化。
为实现这一目标,您可以查看其中如何实施其他方面https://community.algolia.com/wordpress/customize-search-page.html
此外,以下是注册自定义方面的方法:https://community.algolia.com/wordpress/indexing-settings.html#register-custom-facet