如何自动添加和显示(打开)所有产品属性?

时间:2013-10-25 作者:Nikola

添加新产品时,是否有一种方法可以自动将所有可用属性添加到此产品并打开/扩展,以便在添加新产品时,不必先添加它们,然后单击标题进行扩展?

希望这张图片明确了我想要实现的目标:enter image description here

当然,我可以用jQuery手动触发单击“全部展开”按钮,但我很难找到添加这段jQ代码的位置。但对我来说更重要的是前一个问题,所以任何朝着正确方向的努力都是值得赞赏的。

edit: 通过添加以下行,我成功地完成了问题的开放(显示)部分:

jQuery(\'.expand_all\').trigger("click");
在themes/mytheme/admin/admin函数中。siteoptions\\u admin\\u head函数中的php文件。但第一个qq仍然存在。不过,我确实找到了一个解决方法——我可以先添加一个产品,然后将所有现有属性添加到其中,而在制作新产品时,我会复制该产品,然后添加/删除我不需要的属性。然而,如果属性发生变化,这将不会动态工作,因此这并没有多大改进。

2 个回复
最合适的回答,由SO网友:helgatheviking 整理而成

这并不像我最初想象的那么容易。

这将显示显示每个属性。。。。显然,默认情况下,WC隐藏任何没有任何术语的属性。他们已经在代码中了display:none;.

function wpa_120062_scripts(){ ?>
    <script type="text/javascript">
        jQuery(document).ready(function($) {
            $(\'.woocommerce_attributes > div\').removeClass(\'closed\').show();
            $(\'#woocommerce_attributes a.expand_all\').click();
        });

    </script>
<?php
}
add_action(\'admin_print_footer_scripts\', \'wpa_120062_scripts\');
根据您是否计划单击所有“在产品页面上可见”复选框,您可以在创建特定帖子时向其属性添加一些数据。根据其他一些WPA问题,我已经transition_post_status. “自动拔模”状态,应该只在第一次创建时触发。。。从那里,它要么转到“草稿”或任何其他post状态。

function wpa_120062_new_product($new_status, $old_status, $post){
    if ( $new_status == "auto-draft" && isset( $post->post_type ) && $post->post_type == \'product\' ){

        // do stuff here
            $defaults = array ( \'pa_color\' => array (
                                          \'name\' => \'pa_color\',
                                          \'value\' => \'\',
                                          \'position\' => 1,
                                          \'is_visible\' => 1,
                                          \'is_variation\' => 1,
                                          \'is_taxonomy\' => 1,
                                       ),
                                \'pa_capacity\' => array (
                                          \'name\' => \'pa_capacity\',
                                          \'value\' => \'\',
                                          \'position\' => 2,
                                          \'is_visible\' => 1,
                                          \'is_variation\' => 1,
                                          \'is_taxonomy\' => 1,
                                       )
            );

        update_post_meta( $post->ID , \'_product_attributes\', $defaults );

   }

}
add_action(\'transition_post_status\', \'wpa_120062_new_product\', 10, 3);
pa_capacitypa_color 只是我已经安装的一些示例属性。

PS-我建议更新wpa_120062_scripts 只显示在产品编辑屏幕上,但之后我有点烦了。

编辑我们可以使用woocommerce功能wc_get_attribute_taxonomies() 要动态获取所有属性并循环它们,请执行以下操作:

function wpa_120062_new_product($new_status, $old_status, $post){

    if ( $new_status == "auto-draft" && isset( $post->post_type ) && $post->post_type == \'product\' ){

        if( function_exists( \'wc_get_attribute_taxonomies\' ) && ( $attribute_taxonomies = wc_get_attribute_taxonomies() ) ) {

            $defaults = array();

            foreach ( $attribute_taxonomies as $tax ) {

                $name = wc_attribute_taxonomy_name( $tax->attribute_name );

                // do stuff here
                $defaults[ $name ] = array (
                    \'name\' => $name,
                    \'value\' => \'\',
                    \'position\' => 1,
                    \'is_visible\' => 1,
                    \'is_variation\' => 1,
                    \'is_taxonomy\' => 1,
                );

            update_post_meta( $post->ID , \'_product_attributes\', $defaults );

            }

        }

    }

}
add_action(\'transition_post_status\', \'wpa_120062_new_product\', 10, 3);
PS-我认为WC2中的默认设置会有所不同。1、对于我的最新git版本,这对我来说已经不太一样了。

SO网友:vadims

WC 2.1 update:

function wpa_120062_scripts(){ ?>
<script type="text/javascript">
    jQuery(document).ready(function($) {
        $(\'.product_attributes > div\').removeClass(\'closed\').show();
        $(\'#product_attributes a.expand_all\').click();
    });

</script>

结束

相关推荐

Security and Must Use Plugins

从codex article 必须使用插件:只需将文件上载到mu插件目录即可启用,无需登录我觉得这是一个潜在的安全问题。在站点上运行插件中的任何代码之前,必须通过管理面板激活常规插件。我一直认为这是一个明智的安全预防措施,因为攻击者如果能够以某种方式将文件上载到plugins文件夹,则在运行代码之前,还必须访问和修改数据库。这个mu-plugins 文件夹似乎提供了一种简单的方法来避免这种情况。我知道WordPress开发人员比我更了解安全性,所以我想知道是否有人能解释为什么这不是一个安全漏洞。