我需要一些短码方面的帮助

时间:2013-07-18 作者:Chaos67731

所以我从短代码开始,这是我第一次尝试制作一个,我用它来制作css/js选项卡以获取信息,并基于我从前面得到的代码。。

因此,我将尽最大努力解释我所拥有的以及我正在努力做的事情。

以下是我的简短代码

[tabs]
[tab title="This is tab 1 Title"]Tab 1 Content [/tab]
[tab title="This is tab 2 Title"]Tab 2 Content [/tab]
[tab title="This is tab 3 Title"]Tab 3 Content [/tab]
[tab title="This is tab 4 Title"]Tab 4 Content [/tab]
[/tabs]
这是我用来制作选项卡的代码
 /* -----------------------------------------------------------------
        Tab
----------------------------------------------------------------- */


 // Set up Scripts For Tabs 
 function add_tabs_scripts_to_head(){
    wp_register_script( \'custom-script\', get_template_directory_uri() . \'/js/zozoTabs.js\' );
    // For either a plugin or a theme, you can then enqueue the script:
    wp_enqueue_script( \'custom-script\' );
}

 // Set up Style For Tabs 
 function add_tabs_style_to_head(){
    wp_register_style( \'custom-style\', get_template_directory_uri() . \'/css/zozoTabs.css\');
    // For either a plugin or a theme, you can then enqueue the style:
    wp_enqueue_style( \'custom-style\' );
}

add_action(\'template_redirect\', \'add_scripts\'); 

extract(shortcode_atts(array(
        \'style\' => false,
        \'orientation\' => false,
    ), $atts));

function add_scripts() { 
   global $wp_query; 
   if ( is_singular() ) { 
      $post = $wp_query->get_queried_object(); 
      if ( false !== strpos($post->post_content, \'[tabs\') ) { 
      // Adding the style JUST when needed
      add_action( \'wp_enqueue_scripts\', \'add_tabs_style_to_head\' );
      add_action( \'wp_enqueue_scripts\', \'add_tabs_scripts_to_head\' );
      } 
   } 
}
add_shortcode(\'tabs\', \'ts_tab\');
    function ts_tab($atts, $content = null, $code) {
    if (!preg_match_all("/(.?)\\[(tab)\\b(.*?)(?:(\\/))?\\](?:(.+?)\\[\\/tab\\])?(.?)/s", $content, $count)) {
        return do_shortcode($content);

    } else {
        for($i = 0; $i < count($count[0]); $i++) {
            $count[3][$i] = shortcode_parse_atts($count[3][$i]);
}
$output = \'     
    <script>
        $(document).ready(function () {
            $("#tabbed-nav").zozoTabs({
                defaultTab: "tab1",
                rounded: false,
            });
        });
    </script>

    <div id="basic-usage">
    <div id="tabbed-nav"> 
    <ul>
\';      
    for($i = 0; $i < count($count[0]); $i++) {
        $output .= \'<li><a>\' . $count[3][$i][\'title\'] . \'</a></li>\';
    }
    $output .= \'</ul>\';

    $output .= \'<div>\';
    for($i = 0; $i < count($count[0]); $i++) {
        $output .= \'<div>\' . do_shortcode(trim($count[5][$i])) . \'</div>\';
    }
    $output .= \'</div>\';
    return \'<div class="tabcontainer">\' . $output . \'</div></div></div>
    \';}
}
和一个相同的粘贴箱:http://pastebin.com/wZ6VRPwm

所有这些都很好,但我要做的是让我的简短代码从下面开始

[tabs orientation="vertical"]
它会增加orientation: "vertical",

粘贴到粘贴箱的第52行,使其看起来像这样

<script>
   $(document).ready(function () {
   $("#tabbed-nav").zozoTabs({
      defaultTab: "tab1",
      rounded: false,
      orientation: "vertical",
   });
   });
</script>
这就是问题所在,我已经尝试了所有我能想到的和搜索的方法,但没有找到任何地方。

1 个回复
SO网友:Krzysiek Dróżdż

首先我想这是一个质量很差的代码。

您假设页面上只有一个选项卡小部件(它由HTML id参数识别,所以在同一页面上放置两个小部件将生成无效的HTML代码)。

您还只实现了一个短代码,用于解析其内容。但我不认为你真的需要这个。

短代码更好的版本是使用嵌套的短代码:

[tabs]
   [tab]
      content
   [/tab]
[/tabs]
所以你应该注册tabstab 短代码。WordPress将为您解析它们;)更多信息请点击此处:http://codex.wordpress.org/Shortcode_API#Nested_Shortcodes

要这样做,只需打电话do_shortcodes 在短代码回调中。

Javascripts将您的内联JS放在单独的文件中。将其放入类似以下内容的队列:

function my_scripts_method() {
    wp_enqueue_script(
        \'custom-script\',
        get_stylesheet_directory_uri() . \'/js/custom_script.js\',
        array( \'jquery\' )
    );
}
add_action( \'wp_enqueue_scripts\', \'my_scripts_method\' );
将参数发送到JS,而不是为不同的参数输出不同的JS代码,让这个JS智能化。因此,如果您希望将不同的选项传递给zozoTabs,请让JS根据classdata 属性

因此,您的JS可以如下所示:

$(document).ready(function () {
    $(".tabbed-nav")each(function() {
        $(this).zozoTabs({
            defaultTab: "tab1",
            rounded: ( $(this).data(\'zozo-rounded\') ) ? true : false
        });
    });
});

结束

相关推荐

如何重命名运行在IIS6上的WordPress wp-login.php?

我的Windows 2003 VPS最近挂起,因为机器人程序连续几个小时不停地敲打我的WordPress登录php(根据IIS6日志确定)。这导致MySQL耗尽了所有分配的1G RAM。重置VM后,我迅速重命名了wp登录名。php来防止我的服务器再次崩溃。按照重命名新安装的web应用程序的管理员用户名和管理员登录文件夹/路径的标准做法,在6月份第一次安装WP之后,我尝试重命名WP admin文件夹,但失败了。我向wp admin添加了Windows身份验证,希望这将有助于提高安全性,但事实证明,这并不能阻