在何处应用“应用筛选器”和其他清理功能

时间:2017-07-26 作者:The WP Intermediate

我今天在这里学到了一些新东西post.

我已经为Post小部件编写了代码→

        <?php
    class chimp_post_widget extends WP_Widget {
        function __construct() {
            //Create Widget
            parent::__construct(
                \'post_display_widget\',
                esc_html__(\'The Post Widget\',\'simplisto\'),
                array(
                    \'classname\'       =>    \'post-widget\',
                    \'description\'     =>    esc_html__(\'A Post Thumbnail Widget\', \'simplisto\' )
                )
            );
    }

    public function form( $instance ) {
        $title = isset( $instance[\'title\'] ) ? $instance[\'title\'] : \'\';
        $number_of_posts = isset( $instance[\'number_of_posts\'] ) ? absint( $instance[\'number_of_posts\'] ) : 5;
        $number_of_words = isset( $instance[\'number_of_words\'] ) ? absint( $instance[\'number_of_words\'] ) : 20;

        $cat_include = isset( $instance[\'cat_include\'] ) ? $instance[\'cat_include\'] : \'\';
        $cat_exclude = isset( $instance[\'cat_exclude\'] ) ? $instance[\'cat_exclude\'] : \'\';

        $vertical_sidebar_check =  isset( $instance[ \'vertical_sidebar_check\' ] ) && ( \'on\' === $instance[ \'vertical_sidebar_check\' ] ) ? \'on\' : \'off\';
        ?>
        <p><label for="<?php echo $this->get_field_id( \'title\' ); ?>"><?php _e( \'Title:\', \'simplisto\' ); ?></label>
        <input class="widefat" id="<?php echo $this->get_field_id( \'title\' ); ?>" name="<?php echo $this->get_field_name( \'title\' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" /></p>

        <p><label for="<?php echo $this->get_field_id( \'number_of_posts\' ); ?>"><?php _e( \'Number of projects to show:\', \'simplisto\' ); ?></label>
        <input class="tiny-text" id="<?php echo $this->get_field_id( \'number_of_posts\' ); ?>" name="<?php echo $this->get_field_name( \'number_of_posts\' ); ?>" type="number" step="1" min="1" value="<?php echo $number_of_posts; ?>" size="3" /></p>

        <p><label for="<?php echo $this->get_field_id( \'number_of_words\' ); ?>"><?php _e( \'Set the word limit for project descriptions:\', \'simplisto\' ); ?></label>
        <input class="tiny-text" id="<?php echo $this->get_field_id( \'number_of_words\' ); ?>" name="<?php echo $this->get_field_name( \'number_of_words\' ); ?>" type="number" step="1" min="1" value="<?php echo $number_of_words; ?>" size="4" /></p>

        <p><label for="<?php echo $this->get_field_id( \'cat_include\' ); ?>"><?php _e( \'Include Categories:\', \'simplisto\' ); ?></label>
        <input class="widefat" id="<?php echo $this->get_field_id( \'cat_include\' ); ?>" name="<?php echo $this->get_field_name( \'cat_include\' ); ?>" type="text" value="<?php echo esc_attr( $cat_include ); ?>" />
        <small>Comma separated list of category IDs to <strong>include</strong> in post query. e.g.: 11,17,347<br>If blank, all categories will be included.</small>
        </p>

        <p><label for="<?php echo $this->get_field_id( \'cat_exclude\' ); ?>"><?php _e( \'Exclude Categories:\', \'simplisto\' ); ?></label>
        <input class="widefat" id="<?php echo $this->get_field_id( \'cat_exclude\' ); ?>" name="<?php echo $this->get_field_name( \'cat_exclude\' ); ?>" type="text" value="<?php echo esc_attr( $cat_exclude ); ?>" />
        <small>Comma separated list of category IDs to <strong>exclude</strong> in post query. e.g.: 1,16<br>If blank, no categories will be excluded.</small>
        </p>

        <p><input class="checkbox" type="checkbox" <?php checked( $vertical_sidebar_check, \'on\' ); ?> id="<?php echo $this->get_field_id( \'vertical_sidebar_check\' ); ?>" name="<?php echo $this->get_field_name( \'vertical_sidebar_check\' ); ?>" />
        <label for="<?php echo $this->get_field_id( \'vertical_sidebar_check\' ); ?>"><?php _e(\'Select for Vertical Sidebar\', \'simplisto\'); ?></label></p>


         <?php
    }

    public function update($new_instance, $old_instance) {
        $instance = $old_instance;
        $instance[\'title\']           = sanitize_text_field( $new_instance[\'title\'] );
        $instance[\'number_of_posts\'] = absint( $new_instance[\'number_of_posts\'] );
        $instance[\'number_of_words\'] = absint( $new_instance[\'number_of_words\'] );
        $instance[\'cat_include\']     = sanitize_text_field( $new_instance[\'cat_include\'] );
        $instance[\'cat_exclude\']     = sanitize_text_field( $new_instance[\'cat_exclude\'] );
        $instance[ \'vertical_sidebar_check\' ] = isset( $new_instance[ \'vertical_sidebar_check\' ] ) && ( \'on\' === $new_instance[ \'vertical_sidebar_check\' ] ) ? \'on\' : \'off\';
        return $instance;
    }

    public function widget($args, $instance) {
        extract( $args );
        $title = apply_filters( \'widget_title\', $instance[\'title\'] );

        /* Display the markup before the widget. */
        echo $args[\'before_widget\'];

        if ( ! empty( $instance[\'title\'] ) ) {
            echo $args[\'before_title\'] . apply_filters( \'widget_title\', $instance[\'title\'] ) . $args[\'after_title\'];
        }

        $number_of_posts = ( ! empty( $instance[\'number_of_posts\'] ) ) ? absint( $instance[\'number_of_posts\'] ) : 5;
        if ( ! $number_of_posts ) {
            $number_of_posts = 5;
        }

        $number_of_words = ( ! empty( $instance[\'number_of_words\'] ) ) ? absint( $instance[\'number_of_words\'] ) : 20;
        if ( ! $number_of_words ) {
            $number_of_words = 20;
        }

        // Convert comma separated string to array for use in WP_Query.
        $category_include = $instance[\'cat_include\'];
        if ( $category_include ) {
            $category_include = explode( \',\', $instance[\'cat_include\'] );
        } else {
            $category_include = array();
        }

        // Convert comma separated string to array for use in WP_Query.
        $category_exclude = $instance[\'cat_exclude\'];
        if ( $category_exclude ) {
            $category_exclude = explode( \',\', $instance[\'cat_exclude\'] );
        } else {
            $category_exclude = array();
        }

        $vertical_sidebar_check = isset( $instance[ \'vertical_sidebar_check\' ] ) && ( \'on\' === $instance[ \'vertical_sidebar_check\' ] ) ? \'on\' : \'off\';

        /* Create a custom query and get the most recent x projects. */
        $queryArgs = array(
            \'category__in\' => $category_include,
            \'category__not_in\' => $category_exclude,
            /* Order by date. */
            \'orderby\' => \'date\',
            /* Show all posts. */
            \'posts_per_page\' => $number_of_posts,
        );

        $query = new WP_Query( $queryArgs );
        if ( $query->have_posts() ) : ?>
                <ul class="unbullet<?php echo $vertical_sidebar_check === \'on\' ? \' unbullet-v\' : \'\'; ?>">
                <?php while ( $query->have_posts() ) : $query->the_post(); ?>
                        <li class="snippet-box<?php echo $vertical_sidebar_check === \'on\' ? \' vertical\' : \'\'; ?>">
                            <div>
                                <!-- <img src="http://heightandweights.com/wp-content/uploads/2014/10/Beautiful-Lindsey-Vonn.jpg" alt="" class="hundred"> -->
                                <?php the_post_thumbnail( \'medium\', array( \'class\' => \'hundred\' ) ); ?>
                                <div class="snippet-text">
                                    <h3><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
                                    <p><?php echo wp_trim_words( get_the_excerpt(), $number_of_words , __( \'&hellip;\', \'simplisto\' ) ); ?></p>
                                </div>
                            </div>
                            <!-- <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_post_thumbnail( \'large\', array( \'class\' => \'img-responsive\' ) ); ?></a> -->
                        </li>
                <?php endwhile; ?>
                </ul>
        <?php endif;
        /* Display the markup after the widget. */
        echo $after_widget;
    }
}

    add_action(\'widgets_init\', function(){
        register_widget(\'chimp_post_widget\');
    })
    ?>
你认为有什么地方可以写apply_filters 或者像我这样的新手错过的任何其他类型的消毒。

我认为这篇文章可能有助于各种初学者实现santization和其他对代码质量很重要的功能。

1 个回复
SO网友:Rick Hellewell

我在函数的顶部使用这些命令。所有子主题中的php;它将清理所有POST/GET。也许有更好的方法(可能是多余的),但它似乎对我有用。

$_POST  = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
$_GET  = filter_input_array(INPUT_GET, FILTER_SANITIZE_STRING);
但我愿意接受建设性的批评。。。。

结束

相关推荐

当返回值为空时,Apply_Filters为什么要返回非空字符串?

因为这个把我的键盘弄坏了。进行了正确的安装,将数据库上载到新的MySQL,并一直在正确使用子主题。但有件事困扰着我,我想不出来。在我的新安装上(ver2.whowhatwhy.com) 我故意将一些小部件留空。我想,当阅读default-widgets.php wp中的文件包括在该小部件上不会显示标题元素。相反,显示标题小部件是因为,出于某种原因,传递的值apply_filters 是一个空格,而不是空白值$instance[\'title\'] 为空。$title = apply_filters( \'