我正在尝试掌握WordPress开发。我对PHP有基本的了解,但是我知道在WordPress中进行开发时语法会略有不同。
场景:
为了确保我的PHP代码正常运行,我运行了以下测试:
// define query
$args = array('post_type' => 'case-studies' );
$the_query = new WP_Query($args);
// The Loop
if ( $the_query->have_posts() ) { // check, does the query have posts?
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>' .get_the_title() . '</li>'; // spits out page title
}
echo '</ul>';
/* Restore original Post Data */
wp_reset_postdata();
} else {
// no posts found
}
有效的方法是回显前端的页面标题。
现在,在WordPress中,我已经通过custom fields
创建了一个新的字段组:
在与上述相同的文件中,我写了以下内容
if ( $the_query->have_posts() ) {
$case-study-heading = get_field('case_study_heading');
$case-study-subheading = get_field('case_study_subheading');
$case-study-backgroung = get_field('case_study_background');
$case-study-play = get_field('case_study_play_button');
echo $case-study-heading;
} else {
echo "no posts";
}
在以下一行显示解析错误:语法错误,意外的'=':
$case-study-heading = get_field('case_study_heading');
通常在PHP中,我会像这样进行上述查询:
$query = mysqli_query ("SELECT * FROM table_name"){
$results = mysqli_fetch_assoc ($query);
$case-study-heading = results['field_name'];
$case-study-subheading = results['field_name'];
if($results!=0) {
echo "<ul>
<<li>$case-study-heading<li>
<li>$case-study-subheading</li>
</ul>";
} else{
echo "no rows in db";
}
}
我是否正确执行WP PHP?如果是这样,关于我为什么会出现解析错误的想法?
Ps。。我在这里看到了ACF documentation。我已经修改了代码以使其与$variable = get_field('field_name');
相匹配,但仍然会遇到相同的错误?
编辑:在Will发表评论后,我修改了WP PHP代码:
if ( $the_query->have_posts() ) {
$case_study_heading = get_field('case_study_heading');
$case_study_subheading = get_field('case_study_subheading');
$case_study_backgroung = get_field('case_study_background');
$case_study_play = get_field('case_study_play_button');
echo $case_study_heading;
} else {
echo "no posts";
}
现在,运行此命令后,我看不到任何错误(很好!),但是什么都没显示?甚至else
都没有,这意味着if statement
在工作吗?
我在WP的那些字段中有文字:
想法?
答案 0 :(得分:0)
尝试一下。
您需要循环传递get_field
中的帖子。否则它将获得当前页面ID
if ( $the_query->have_posts() ) {
$PostId = get_the_ID();
$case_study_heading = get_field('case_study_heading', $PostId);
$case_study_subheading = get_field('case_study_subheading', $PostId);
$case_study_backgroung = get_field('case_study_background', $PostId);
$case_study_play = get_field('case_study_play_button', $PostId);
echo $case_study_heading;
} else {
echo "no posts";
}
答案 1 :(得分:0)
如果这是您的代码
if ( $the_query->have_posts() ) {
$case_study_heading = get_field('case_study_heading');
// etc (for brevity)
echo $case_study_heading;
} else {
echo "no posts";
}
那么您还没有包含该循环,因此您的get_field()
将全部针对包含的帖子/页面,而不是循环中的帖子。
因此,您还需要包括循环:
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
$case_study_heading = get_field('case_study_heading');
// etc (for brevity)
echo $case_study_heading;
}
} else {
echo "no posts";
}