我正在向页面添加一个自定义字段,用于选择要在该页面上显示的博客类别。所有其他字段都工作正常,因此,我将发布仅与此字段相关的代码。加载页面编辑器时获取错误500.
$feat_blog = isset( $values['feat_blog'] ) ? esc_attr( $values['feat_blog'][0] ) : "";
这是字段本身
<select name="feat_blog" id="feat_blog" value="<?php echo $feat_blog; ?>">
<?php $categories = get_categories(); foreach($categories as $category) { ?>
<option value="<?php echo $category->slug ?>"> <?php echo $category->name ?></option>
<?php } ?>
</select>
实际造成麻烦的清理代码
if ( isset( $_POST['feat_blog'] )){
$valid_values = array(
categories = get_categories();
foreach($categories as $category) {
echo $category->slug,
}
);
$value = sanitize_text_field( $_POST['feat_blog'] );
if( in_array( $value, $valid_values ) ) {
update_post_meta( $post->ID, 'feat_blog', $value );
}
}
答案 0 :(得分:0)
这里的代码存在很多问题......
您将;
放入数组并尝试在其中分配变量。
您是echo
数组。
您正在数组中运行函数。
您错过了$
变量前面的$categories
。
if ( isset( $_POST['feat_blog'] )) {
$categories = get_categories();
$valid_values = array();
foreach($categories as $category) {
$valid_values[] = $category->slug;
}
$value = sanitize_text_field( $_POST['feat_blog'] );
if( in_array( $value, $valid_values ) ) {
update_post_meta( $post->ID, 'feat_blog', $value );
}
}
我在这里做的是将$categories
变量声明移到foreach
循环之外,并在循环之前设置$valid_values
数组。如果在循环内部进行设置,则每次循环发生时都会重置。您也不能在数组中使用;
,因为它旨在关闭语句。