在使用 Timber for WordPress 时,如何为 for 循环声明 post 类型的 PHP 变量?
How do I declare a PHP var from a post type for a for loop when using Timber for WordPress?
我目前在 php 中使用 WordPress 上的 twig/timber 声明收到未定义的变量错误,即使下面的代码 returns 显示 posts按预期打开页面,我仍然在调试模式下收到错误消息(见下文)。我意识到需要声明 PHP 变量,并且我没有在循环之前的任何地方声明 $jobs,但我的理解是 $context 将 post 类型 'jobs' 转换为 php 变种。如果不是,我做错了什么以及如何声明?
错误信息:
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');
TWIG 文件:
{% 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 %}
我目前在 php 中使用 WordPress 上的 twig/timber 声明收到未定义的变量错误,即使下面的代码 returns 显示 posts按预期打开页面,我仍然在调试模式下收到错误消息(见下文)。我意识到需要声明 PHP 变量,并且我没有在循环之前的任何地方声明 $jobs,但我的理解是 $context 将 post 类型 'jobs' 转换为 php 变种。如果不是,我做错了什么以及如何声明?
错误信息:
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');
TWIG 文件:
{% 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 %}