【问题标题】:How to place language switcher in header?如何在标题中放置语言切换器?
【发布时间】:2013-12-31 07:02:25
【问题描述】:

所以,我正在使用 Wordpress 开发我的网站。首先要说,我不是 php 编码器,我只是在我的 wordpress 网站上偶然发现了这个东西。我买了一个主题并安装了 Simple Language Switcher 插件。它有效,但我不知道如何将它放在我想要的地方。我在 header.php 文件中的任何地方都尝试过,但没有运气。你可以在下面的图片中看到它现在的位置和我想要的位置(对,我在这里写的)。以及插件的链接:

http://www.mendoweb.be/blog/wordpress-plugin-simple-language-switcher/

这是我的语言栏的代码:

<?php if( function_exists( 'simple_language_switcher' ) ) { ?>
<div id="simple-language-switcher"><?php simple_language_switcher(); ?></div>
<?php } ?>

这是我现在的 header.php 文件:

<?php
/**
 * The Header for our theme.
 *
 * Displays all of the <head> section and everything up till <main id="main">
 *
 * @package Terrifico
 */
?><!DOCTYPE html>
<!--[if IE 7]>
<html class="ie ie7" <?php language_attributes(); ?>>
<![endif]-->
<!--[if IE 8]>
<html class="ie ie8" <?php language_attributes(); ?>>
<![endif]-->
<!--[if !(IE 7) | !(IE 8)  ]><!-->
<html <?php language_attributes(); ?>>
<!--<![endif]-->
<head>
<?php global $data; ?>
<meta charset="<?php bloginfo( 'charset' ); ?>" />
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
<title><?php wp_title( '|', true, 'right' ); ?></title>
<link rel="profile" href="" />
<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>" />
<?php if ($data['enable_favicon'] == 1 ) { ?>
    <link rel="shortcut icon" href="<?php echo $data['favicon']; ?>" type="image/x-icon" />

<?php } ?>
<?php // Loads HTML5 JavaScript file to add support for HTML5 elements in older IE versions. ?>
<!--[if lt IE 9]>
<script src="<?php echo get_template_directory_uri(); ?>/js/html5.js" type="text/javascript"></script>
<![endif]-->

<?php terrifico_custom_styling(); ?>
<?php wp_head(); ?>
<?php if ($data['custom_css'] <> "") { ?>
    <style type="text/css">
        <?php echo $data['custom_css']; ?>
    </style>
<?php } ?>  
</head> 

<body <?php body_class(); ?>>

<div id="grid-container">
    <?php if ( $data['top_panel_enable'] == 1 ) { get_template_part( 'top-panel' ); }; ?>


<?php if( function_exists( 'simple_language_switcher' ) ) { ?>
<div id="simple-language-switcher"><?php simple_language_switcher(); ?></div>
<?php } ?>

    <div class="clear"></div>

    <div id="branding" class="<?php echo $data['layout']; ?>">
        <header id="header">
            <div id="logo">

                <?php if ( $data['text_logo_enable'] != 1 ) { ?>
                    <a href="<?php echo home_url(); ?>/"><img src="<?php echo $data['logo']; ?>" alt="<?php echo $data['logo_alt_text']; ?>"/></a>
                <?php } else { ?>
                    <a href="<?php echo home_url(); ?>/"><?php echo $data['logo_alt_text']; ?></a>
                <?php } ?>
            </div>      
            <?php if ( $data['menu_separated'] != 1 ) { ?>
                <div id="nav-holder">
                    <nav id="site-navigation-in" class="main-navigation" role="navigation">
                        <?php wp_nav_menu(array('theme_location' => 'main_navigation', 'container' => false,'menu_id'=>'menu-main-navigation','menu_class' => 'sf-menu sf-js-enabled sf-shadow', 'fallback_cb'=> 'terrifico_selectmenu', )); ?>
                    </nav><!--site-navigation-->
                </div>
            <?php } ?>
            <script type="text/javascript">
                var sf=jQuery.noConflict();
                sf(window).load(function(){
                // superFish
                sf('ul.sf-menu').supersubs({
                minWidth:    16, // minimum width of sub-menus in em units
                maxWidth:    40, // maximum width of sub-menus in em units
                extraWidth:  1 // extra width can ensure lines don't sometimes turn over
                })
                .superfish(); // call supersubs first, then superfish
                });
            </script>
    </div><!--branding-->
<?php if ( $data['menu_separated'] == 1 ) { ?>
    <div id="nav-holder" class="<?php echo $data['layout']; ?>">
        <nav id="site-navigation" class="main-navigation" role="navigation">
            <?php wp_nav_menu(array('theme_location' => 'main_navigation', 'container' => false,'menu_id'=>'menu-main-navigation','menu_class' => 'sf-menu sf-js-enabled sf-shadow', 'fallback_cb'=> 'terrifico_selectmenu', )); ?>
        </nav><!--site-navigation-->
    </div>
<?php } ?>
    <?php if ( $data['front_page_blog_index'] == 1 ) {?>
        <?php if (! is_home()) { ?>
            <?php if ( $data['page_header_on'] == 1 ) { ?>
                <?php get_template_part( 'page-header' ); ?>
            <?php } ?>
        <?php } ?>
    <?php } else { ?>
        <?php if ( $data['page_header_on'] == 1 ) { ?>
            <?php get_template_part( 'page-header' ); ?>
        <?php } ?>
    <?php } ?>

【问题讨论】:

  • 在您的条件语句中添加die() 如果页面显示为空白,则您知道该函数未定义。如果没有,您就知道该函数未定义。或者,检查控制台,是否出现封装容器?继续进行与上述相同的调试。这将使您能够进一步确定问题。

标签: php wordpress


【解决方案1】:

你需要编辑的文件是top-panel.php,和header.php在同一个目录下。它包含主题中标题部分的扩展 PHP 代码。您可以在此处查看 header.php 中引用它的位置,就在您当前拥有语言条形码的位置上方:

<?php if ( $data['top_panel_enable'] == 1 ) { get_template_part( 'top-panel' ); }; ?>

WordPress 主题越来越普遍,当他们的设计者想要保持一切整洁时,将通常的主题部分(如 header.php、footer.php 等)进一步划分为子文件。换句话说,top-panel.php 是 header.php,就像 header.php 是 index.php。

首先,备份您编辑的所有文件,然后小心地将语言条形码插入 top-panel.php 中,使文件看起来像这样:

<?php
/**
 * @package Terrifico
 */
global $data; ?>
    <div id="top-panel" class="<?php echo $data['layout']; ?>">
        <div id="info-box">
            <?php if ( $data['top_contact_enable'] == 1 ) { get_template_part( 'contact-bar' ); }; ?>
            <?php if(class_exists('Woocommerce')) { ?>
                <?php if ( $data['header_social_enable'] == 1 && $data['shopping_cart_enable'] == 0 ) { get_template_part( 'social-bar' ); }; ?>

                <?php if ( $data['shopping_cart_enable'] == 1 ) { get_template_part( 'shopping-cart' ); } ;?>
            <?php } else { ?>
                <?php if ( $data['header_social_enable'] == 1 ) { get_template_part( 'social-bar' ); }; ?>
            <?php } ?>

    /* INSERT LANGUAGE BAR CODE */
    <?php if( function_exists( 'simple_language_switcher' ) ) { ?>
    <div id="simple-language-switcher"><?php simple_language_switcher(); ?></div>
    <?php } ?>
    /* END LANGUAGE BAR CODE */

        </div><!-- #info-box -->
    </div><!-- #top-panel -->

基本上,您希望语言条形码顶部面板&lt;div&gt;。这是包含“有任何问题?”、社交图标等其他 div 的 div。

我现在实际上并没有安装主题来进行试验,但您可能需要稍微使用 CSS 或上面的代码才能使其完美定位。希望我解释得足够清楚,这会有所帮助。

【讨论】:

  • 这工作......部分。我在电话号码的右边找到了它,但我一直需要它。另外,我需要它垂直居中,并且它在顶部。另外,我不知道如何,我在页面上看到 /* INSERT LANGUAGE BAR CODE */ 注释。 :)
  • 这很奇怪。我可能错误地使用了多行注释标记(一直在学习)。但是您可以删除那些 INSERT 和 END 行,我只是想让它在示例中脱颖而出。哎呀,按错了提交……一会儿……
  • 抱歉,不允许我编辑 6 分钟前的评论。主题没有设计为在那里有一个额外的 div,因此您必须使用 css 为 div 指定一些样式。我可能会让解释太复杂(很简单),但是here is one way to do it that should work。我只会玩弄顶部和左侧的值,直到它出现在你需要的地方。增加“top”会将其向下推多少像素,增加“left”会将其推向右侧。这会让它出现在你需要的地方。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多