php - 使用 Timber for WordPress 时,如何从帖子类型声明 PHP var 以进行 for 循环?
问题描述
我目前使用 WordPress 上的 twig/timber 声明在 php 中返回了一个未定义的变量错误,即使下面的代码按预期返回并在页面上显示帖子,我仍然在调试模式下收到错误消息(见下文)。我意识到需要声明 PHP var,并且我没有在循环之前的任何地方声明 $jobs,但我的理解是 $context 将帖子类型“jobs”转换为 php var。如果不是,我做错了什么以及如何声明它?
错误信息:
Notice: Undefined variable: jobs in /Applications/MAMP/htdocs/xxxx.co.uk/wp-content/themes/xxxx/front-page.php on line 19
PHP 文件:
$context['jobs'] = Timber::get_posts('post_type=jobs&posts_per_page=3');
if(is_array($jobs)){ /* line 19 */
// Closing date display format (e.g. 24th October 2019)
foreach( $jobs as &$job ){
$job->job_close_date_formatted = date( 'jS F Y', strtotime( $job->job_close_date ) );
}
}
$context['options'] = get_fields('acf-theme-options');
树枝文件:
{% for job in jobs %}
{% include 'components/home-job-panel.twig' %}
{% endfor %}
解决方案
jobs
正在显示,因为您已在$context
$context['jobs'] = Timber::get_posts('post_type=jobs&posts_per_page=3');
foreach
你现在所做的对任何工作都没有影响,因为确实$jobs
是未定义的。如果你想修改一些数据,你需要使用以下foreach
if (is_array($context['jobs'])) foreach($context['jobs'] as &$job) {
我实际上不会费心在控制器内转换数据。恕我直言,这是内部过滤器的目的twig
/timber
{% for job in jobs %}
{{ job.job_close_date | date('jS F Y') }}
{% endfor %}
推荐阅读
- flutter - 当 TextFormField 位于组件内时,无法在 Textformfield 中双击
- javascript - 垂直调整浏览器大小时如何阻止内容重叠?
- php - ldap_start_tls():无法启动 TLS,LdapErr:DSID-0C09128B“TLS 或 SSL 已生效”
- javascript - 鉴于我们必须传递与道具相同的对象,如何不可变地更新对象?
- r - 如何找到某组 chr 行每分钟测量的平均值?
- sql - 从同一行查询不同的结果
- python - Python 初学者对 Spyder 和 VSCode 中的不同结果感到困惑
- node.js - 所以我做了一个自定义状态,所以我的 discord.js 机器人在其状态中显示服务器中的成员数量
- mysql - 如何制作如下的pivot mysql表?
- flutter - 没有为所有选项卡调整动态高度,并且当容器中不存在高度时,框正在消失。有没有其他办法