无法使用WordPress类别

时间:2018-06-05 18:36:26

标签: php wordpress

我正在向页面添加一个自定义字段,用于选择要在该页面上显示的博客类别。所有其他字段都工作正常,因此,我将发布仅与此字段相关的代码。加载页面编辑器时获取错误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 );
    }
}

1 个答案:

答案 0 :(得分:0)

这里的代码存在很多问题......

  1. 您将;放入数组并尝试在其中分配变量。

  2. 您是echo数组。

  3. 您正在数组中运行函数。

  4. 您错过了$变量前面的$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 );
        }
    }
    
  5. 我在这里做的是将$categories变量声明移到foreach循环之外,并在循环之前设置$valid_values数组。如果在循环内部进行设置,则每次循环发生时都会重置。您也不能在数组中使用;,因为它旨在关闭语句。