如何将我自己的自定义WooCommerce短码添加到子主题中?

时间:2013-07-26 作者:Smos

所以我在他们之前买了一个主题。com,它有一些自定义模板可用于Woocommerce插件。我制作了一个子主题,所以我不必编辑这个原始主题中的任何内容。

到目前为止,我所能做的是覆盖表单登录。我的孩子主题中的php模板。

我现在要做的是添加一个自定义短代码,类似于调用表单登录的[woocommerce\\u my\\u帐户]。我已经覆盖的php模板。

在Woocommerce插件中创建短代码的代码如下所示:

文件:/wp-content/plugins/woocommerce/classes/class-wc-shortcode。php

class WC_Shortcodes {

    public function __construct() {
        add_shortcode( \'woocommerce_my_account\', array( $this, \'my_account\' ) );
    }

    public function my_account( $atts ) {
        global $woocommerce;
        return $woocommerce->shortcode_wrapper( array( \'WC_Shortcode_My_Account\', \'output\' ), $atts );
    }
}
文件:/wp-content/plugins/woocommerce/classes/shortcode/class-wc-shortcode-my-account。php

class WC_Shortcode_My_Account {

    public static function get( $atts ) {
        global $woocommerce;
        return $woocommerce->shortcode_wrapper( array( __CLASS__, \'output\' ), $atts );
    }

    public static function output( $atts ) {
        global $woocommerce;

        if ( ! is_user_logged_in() ) {

            woocommerce_get_template( \'myaccount/form-login.php\' );

        } else {

            extract( shortcode_atts( array(
                    \'order_count\' => 5
            ), $atts ) );

            woocommerce_get_template( \'myaccount/my-account.php\', array(
                \'current_user\'  => get_user_by( \'id\', get_current_user_id() ),
                \'order_count\'   => \'all\' == $order_count ? -1 : $order_count
            ) );

        }
    }
}
如何添加这样的自定义快捷码?

我把它放在我的孩子主题里了吗?

我可以从输出函数复制/粘贴代码,并将其放入我的函数中吗。php和do add\\u shortcode(\'custom\\u shortcode\',\'function\\u in\\u my\\u functions\\u php\')?但全球变量woocommerce呢?我可以从我的子主题中访问该变量吗?

非常感谢大家如果有人想了解这一点,我才刚刚开始学习Wordpress。

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

全球$woocommerce 你只需写下global $woocommerce; 在使用之前。阅读this article.

您可以定义自己的短代码,请参见the documentation. 您可以复制/粘贴代码,因为它包装在一个类中,所以不会因双重声明而触发致命错误。

但短代码不是这样工作的:

function shortcode_handler($atts) {
  //code goes here
 }
add_shortcode(\'name_of_shortcode\',\'shortcode_handler\');

结束

相关推荐

如何覆盖Shortcodes.php核心文件?

我想覆盖/更新核心短代码。php文件。构建一个数组并向其他函数发送不同的数据,但我的问题是如何在不编辑核心文件的情况下做到这一点?是否有覆盖核心文件和/或函数的最佳做法?