首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单的Bespoke WordPress集成插件

简单的Bespoke WordPress集成插件
EN

Code Review用户
提问于 2019-12-08 19:05:59
回答 1查看 30关注 0票数 4

我正在建立WordPress与WooCommerce,其中一个要求是一个小的集成,把一个人从另一个网站直接到一个特定的产品。我在产品上设置了标签中的外部产品引用。

传入查询的一个示例是:

http://localhost/TestSite/search?q=9404

我写了一个短插件来做这件事。

我是一个普通的程序员,但对PHP、WordPress和WooCommerce非常陌生。你能看到任何潜在的错误,无效或安全问题吗?

任何洞察力都会欣然接受。

代码语言:javascript
复制
    //Tag on Test Product: 98614
    //example URL:
    //http://localhost/TestSite/search?q=98614

    function TagLinker(){

        if (isset($_GET['q']))
        {
            $TagNumber = $_GET['q'];
            $params=array(
            'post_type' => 'product',
            'post_status' => 'publish',
            'tax_query' => array( array(
                                'taxonomy' => 'product_tag',
                                'field' => 'slug',
                                'terms' => $TagNumber
                            )
            ));
            $wc_query = new WP_Query($params);

            if ($wc_query -> have_posts() ) {
                $wc_query -> the_post();

                $product_id = get_the_ID($wc_query->ID);

                $url = get_permalink( $product_id );

                wp_reset_postdata();
                if ( wp_redirect( $url ) ) {exit;}
            };
        }
    }

add_action( 'init', 'TagLinker' );
?>
EN

回答 1

Code Review用户

回答已采纳

发布于 2019-12-08 23:40:02

使用框架来遵循方法调用来查看实际操作是一个好主意,Wordpress是目前最受开发的框架之一,因此具有相当好的安全性改进。下面是您正在调用的Wordpress WP_Query类(假设您已经提取了最新的代码)。

看起来,__construct调用$params上的$this->查询,该查询调用wp_parse_args()。(如果已经提取了代码,Grep可以帮助查找类在代码中的位置)。https://github.com/WordPress/WordPress/blob/master/wp-includes/class-wp-query.php

就安全性而言,您主要关注的是用户提供的数据$_GET。如果您觉得WP_Query类在净化用户数据方面做得不够,那么您可以自己对其进行消毒。

在您的情况下,看起来您只想让用户提供一个整数?如果是这样的话,你可以过滤。必要时调整:

代码语言:javascript
复制
if (filter_var($_GET['q'], FILTER_VALIDATE_INT)) {
   // is int
}

附加提示:在您的示例中没有理由将$_GET设置为$TagNumber,因为您没有对它进行消毒。这样做只会增加内存使用量,并使代码评审复杂化。

对于是否在if和"{“之间清除,请保持一致。清除的大部分原因与重构有关,并且主要适用于类定义。

没有必要?>关闭脚本,它可以添加意外的空白。

不要缩进函数,除非它们在类中(看起来是没有原因的)。

选择一种命名变量的样式,例如snake_case;不是$TagName和$params,而是$tag_name和$params

我希望这是有用的:)

票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/233643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档