Support » Themes » Fehlermeldung Cannot redeclare get_subcategory_terms()

  • Gelöst marcsebastian

    (@marcsebastian)


    Ich habe gerade an der functions.php rumgespielt, da ich Kategorien in meinem Shop (WooCommerce) ausblenden wollte. Wenn ich jetzt auf Datei aktualisieren klicke kommt diese Fehlermeldung: Fatal error: Cannot redeclare get_subcategory_terms() (previously declared in /www/htdocs/w0137581/rosengarten2005.de/wordpress/wp-content/themes/retrotale/functions.php:414) in /www/htdocs/w0137581/rosengarten2005.de/wordpress/wp-content/themes/retrotale/functions.php on line 448 Meiner Meinung nach habe ich aber gar keine 448 Zeilen?
    Hier ist meine functions.php :

    <?php
    /**
     * RetroTale functions and definitions.
     * @package RetroTale
     * @since RetroTale 1.0.0
    */
    
    /**
     * RetroTale theme variables.
     *
    */
    $retrotale_themename = "RetroTale";	//Theme Name
    $retrotale_themever = "1.1.1";			//Theme version
    $retrotale_shortname = "retrotale";	//Shortname
    $retrotale_manualurl = get_template_directory_uri() . '/docs/documentation.html';	//Manual Url
    // Set path to RetroTale Framework and theme specific functions
    $retrotale_be_path = get_template_directory() . '/functions/be/';									//BackEnd Path
    $retrotale_fe_path = get_template_directory() . '/functions/fe/';									//FrontEnd Path
    $retrotale_be_pathimages = get_template_directory_uri() . '/functions/be/images';		//BackEnd Path
    $retrotale_fe_pathimages = get_template_directory_uri() . '';	//FrontEnd Path
    //Include Framework [BE]
    require_once ($retrotale_be_path . 'fw-options.php');	 	 // Framework Init
    // Include Theme specific functionality [FE]
    require_once ($retrotale_fe_path . 'headerdata.php');		 // Include css and js
    require_once ($retrotale_fe_path . 'library.php');	       // Include library, functions
    
    /**
     * RetroTale theme basic setup.
     *
    */
    function retrotale_setup() {
    	// Makes RetroTale available for translation.
    	load_theme_textdomain( 'retrotale', get_template_directory() . '/languages' );
      // This theme styles the visual editor to resemble the theme style.
      $retrotale_font_url = add_query_arg( 'family', 'Lobster', "//fonts.googleapis.com/css" );
      add_editor_style( array( 'editor-style.css', $retrotale_font_url ) );
    	// Adds RSS feed links to <head> for posts and comments.
    	add_theme_support( 'automatic-feed-links' );
    	// This theme supports custom background color and image.
    	$defaults = array(
    	'default-color' => '',
      'default-image' => get_template_directory_uri() . '/images/pattern.png',
    	'wp-head-callback' => '_custom_background_cb',
    	'admin-head-callback' => '',
    	'admin-preview-callback' => '' );
      add_theme_support( 'custom-background', $defaults );
    	// This theme supports post thumbnails.
    	add_theme_support( 'post-thumbnails' );
    	set_post_thumbnail_size( 1170, 9999 );
      // This theme supports a custom header image.
      $args = array(
    	'width' => 2000,
    	'height' => 400,
      'flex-width' => true,
      'flex-height' => true,
      'header-text' => false,
      'random-default' => true,);
      add_theme_support( 'custom-header', $args );
      // This theme supports Post formats.
      add_theme_support( 'post-formats', array( 'aside', 'audio', 'image', 'status', 'video' ) );
      // This theme supports the Title Tag feature.
      add_theme_support( 'title-tag' );
      // This theme supports the WooCommerce plugin.
      add_theme_support( 'woocommerce' );
      global $content_width;
      if ( ! isset( $content_width ) ) { $content_width = 734; }
    }
    add_action( 'after_setup_theme', 'retrotale_setup' );
    
    /**
     * Enqueues scripts and styles for front-end.
     *
    */
    function retrotale_scripts_styles() {
    	global $wp_styles, $wp_scripts, $retrotale_options_db;
    	// Adds JavaScript
    	if ( is_singular() && comments_open() && get_option( 'thread_comments' ) )
    		wp_enqueue_script( 'comment-reply' );
        if ( $retrotale_options_db['retrotale_post_entry_format'] == 'Grid - Masonry' ) {
        if ( is_home() || is_archive() || is_search() ) {
        wp_enqueue_script( 'jquery-masonry' );
        if ( !is_rtl() ) {
        wp_enqueue_script( 'retrotale-masonry-settings', get_template_directory_uri() . '/js/masonry-settings.js', array(), '1.0', true ); } else {
        wp_enqueue_script( 'retrotale-masonry-settings-rtl', get_template_directory_uri() . '/js/masonry-settings-rtl.js', array(), '1.0', true ); }}}
        wp_enqueue_script( 'retrotale-placeholders', get_template_directory_uri() . '/js/placeholders.js', array( 'jquery' ), '2.0.8', true );
        if ( $retrotale_options_db['retrotale_display_scroll_top'] != 'Hide' ) {
        wp_enqueue_script( 'retrotale-scroll-to-top', get_template_directory_uri() . '/js/scroll-to-top.js', array( 'jquery' ), '1.0', true ); }
        if ( $retrotale_options_db['retrotale_fixed_menu'] != 'Disable' && !is_page_template('template-landing-page.php') ) {
        wp_enqueue_script( 'retrotale-menubox', get_template_directory_uri() . '/js/menubox.js', array(), '1.0', true ); }
        wp_enqueue_script( 'retrotale-selectnav', get_template_directory_uri() . '/js/selectnav.js', array(), '0.1', true );
        wp_enqueue_script( 'retrotale-responsive', get_template_directory_uri() . '/js/responsive.js', array(), '1.0', true );
        wp_enqueue_script( 'retrotale-html5-ie', get_template_directory_uri() . '/js/html5.min.js', array(), '3.7.2', false );
        $wp_scripts->add_data( 'retrotale-html5-ie', 'conditional', 'lt IE 9' );
    	// Adds CSS
        wp_enqueue_style( 'retrotale-elegantfont', get_template_directory_uri() . '/css/elegantfont.css' );
        wp_enqueue_style( 'retrotale-google-font-default', '//fonts.googleapis.com/css?family=Lobster&subset=latin,latin-ext' );
        if ( class_exists( 'woocommerce' ) ) { wp_enqueue_style( 'retrotale-woocommerce-custom', get_template_directory_uri() . '/css/woocommerce-custom.css' ); }
    }
    add_action( 'wp_enqueue_scripts', 'retrotale_scripts_styles' );
    
    /**
     * Backwards compatibility for older WordPress versions which do not support the Title Tag feature.
     *
    */
    if ( ! function_exists( '_wp_render_title_tag' ) ) {
    function retrotale_wp_title( $title, $sep ) {
    	if ( is_feed() )
    		return $title;
    	$title .= get_bloginfo( 'name' );
    	$site_description = get_bloginfo( 'description', 'display' );
    	if ( $site_description && ( is_home() || is_front_page() ) )
    		$title = "$title $sep $site_description";
    	return $title;
    }
    add_filter( 'wp_title', 'retrotale_wp_title', 10, 2 );
    }
    
    /**
     * Register our menu.
     *
     */
    function retrotale_register_my_menu() {
      register_nav_menu( 'main-navigation', __( 'Main Header Menu', 'retrotale' ) );
    }
    add_action( 'after_setup_theme', 'retrotale_register_my_menu' );
    
    /**
     * Register our sidebars and widgetized areas.
     *
    */
    function retrotale_widgets_init() {
      register_sidebar( array(
    		'name' => __( 'Right Sidebar', 'retrotale' ),
    		'id' => 'sidebar-1',
    		'description' => __( 'Right sidebar which appears on all posts and pages.', 'retrotale' ),
    		'before_widget' => '<div id="%1$s" class="sidebar-widget %2$s">',
    		'after_widget' => '</div>',
    		'before_title' => ' <p class="sidebar-headline">',
    		'after_title' => '</p>',
    	) );
      register_sidebar( array(
    		'name' => __( 'Footer left widget area', 'retrotale' ),
    		'id' => 'sidebar-2',
    		'description' => __( 'Left column with widgets in footer.', 'retrotale' ),
    		'before_widget' => '<div id="%1$s" class="footer-widget %2$s">',
    		'after_widget' => '</div>',
    		'before_title' => '<p class="footer-headline">',
    		'after_title' => '</p>',
    	) );
      register_sidebar( array(
    		'name' => __( 'Footer middle widget area', 'retrotale' ),
    		'id' => 'sidebar-3',
    		'description' => __( 'Middle column with widgets in footer.', 'retrotale' ),
    		'before_widget' => '<div id="%1$s" class="footer-widget %2$s">',
    		'after_widget' => '</div>',
    		'before_title' => '<p class="footer-headline">',
    		'after_title' => '</p>',
    	) );
      register_sidebar( array(
    		'name' => __( 'Footer right widget area', 'retrotale' ),
    		'id' => 'sidebar-4',
    		'description' => __( 'Right column with widgets in footer.', 'retrotale' ),
    		'before_widget' => '<div id="%1$s" class="footer-widget %2$s">',
    		'after_widget' => '</div>',
    		'before_title' => '<p class="footer-headline">',
    		'after_title' => '</p>',
    	) );
      register_sidebar( array(
    		'name' => __( 'Footer notices', 'retrotale' ),
    		'id' => 'sidebar-5',
    		'description' => __( 'The line for copyright and other notices below the footer widget areas. Insert here one Text widget. The "Title" field at this widget should stay empty.', 'retrotale' ),
    		'before_widget' => '<div class="footer-signature"><div class="footer-signature-content">',
    		'after_widget' => '</div></div>',
    		'before_title' => '',
    		'after_title' => '',
    	) );
    }
    add_action( 'widgets_init', 'retrotale_widgets_init' );
    
    /**
     * Post excerpt settings.
     *
    */
    function retrotale_custom_excerpt_length( $length ) {
    global $retrotale_options_db;
    if ($retrotale_options_db['retrotale_excerpt_length'] != '') {
    return $retrotale_options_db['retrotale_excerpt_length'];
    } else { return 40; }
    }
    add_filter( 'excerpt_length', 'retrotale_custom_excerpt_length', 20 );
    function retrotale_new_excerpt_more( $more ) {
    global $post;
    return '...<br /><a class="read-more-button" href="'. esc_url( get_permalink($post->ID) ) . '">' . __( 'Read more', 'retrotale' ) . '</a>';}
    add_filter( 'excerpt_more', 'retrotale_new_excerpt_more' );
    
    if ( ! function_exists( 'retrotale_content_nav' ) ) :
    /**
     * Displays navigation to next/previous pages when applicable.
     *
    */
    function retrotale_content_nav( $html_id ) {
    	global $wp_query;
    	$html_id = esc_attr( $html_id );
    	if ( $wp_query->max_num_pages > 1 ) : ?>
    		<div id="<?php echo $html_id; ?>" class="navigation" role="navigation">
        <div class="navigation-inner">
    			<h2 class="navigation-headline section-heading"><?php _e( 'Post navigation', 'retrotale' ); ?></h2>
          <div class="nav-wrapper">
    			 <p class="navigation-links">
    <?php $big = 999999999;
    echo paginate_links( array(
    	'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
    	'format' => '?paged=%#%',
    	'current' => max( 1, get_query_var('paged') ),
      'prev_text' => __( '&larr; Previous', 'retrotale' ),
    	'next_text' => __( 'Next &rarr;', 'retrotale' ),
    	'total' => $wp_query->max_num_pages,
    	'add_args' => false
    ) );
    ?>
            </p>
          </div>
    		</div>
        </div>
    	<?php endif;
    }
    endif;
    
    /**
     * Displays navigation to next/previous posts on single posts pages.
     *
    */
    function retrotale_prev_next($nav_id) { ?>
    <?php $retrotale_previous_post = get_adjacent_post( false, "", true );
    $retrotale_next_post = get_adjacent_post( false, "", false ); ?>
    <div id="<?php echo $nav_id; ?>" class="navigation" role="navigation">
    	<div class="nav-wrapper">
    <?php if ( !empty($retrotale_previous_post) ) { ?>
      <p class="nav-previous"><a href="<?php echo esc_url(get_permalink($retrotale_previous_post->ID)); ?>" title="<?php echo esc_attr($retrotale_previous_post->post_title); ?>"><?php _e( '&larr; Previous post', 'retrotale' ); ?></a></p>
    <?php } if ( !empty($retrotale_next_post) ) { ?>
    	<p class="nav-next"><a href="<?php echo esc_url(get_permalink($retrotale_next_post->ID)); ?>" title="<?php echo esc_attr($retrotale_next_post->post_title); ?>"><?php _e( 'Next post &rarr;', 'retrotale' ); ?></a></p>
    <?php } ?>
       </div>
    </div>
    <?php } 
    
    if ( ! function_exists( 'retrotale_comment' ) ) :
    /**
     * Template for comments and pingbacks.
     *
    */
    function retrotale_comment( $comment, $args, $depth ) {
    	$GLOBALS['comment'] = $comment;
    	switch ( $comment->comment_type ) :
    		case 'pingback' :
    		case 'trackback' :
    	?>
    	<li <?php comment_class(); ?> id="comment-<?php comment_ID(); ?>">
    		<p><?php _e( 'Pingback:', 'retrotale' ); ?> <?php comment_author_link(); ?> <?php edit_comment_link( __( '(Edit)', 'retrotale' ), '<span class="edit-link">', '</span>' ); ?></p>
    	<?php
    			break;
    		default :
    		global $post;
    	?>
    	<li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>">
    		<div id="comment-<?php comment_ID(); ?>" class="comment">
    			<div class="comment-meta comment-author vcard">
    				<?php
    					echo get_avatar( $comment, 44 );
    					printf( '<span><b class="fn">%1$s</b> %2$s</span>',
    						get_comment_author_link(),
    						( $comment->user_id === $post->post_author ) ? '<span>' . __( '(Post author)', 'retrotale' ) . '</span>' : ''
    					);
    					printf( '<time datetime="%2$s">%3$s</time>',
    						esc_url( get_comment_link( $comment->comment_ID ) ),
    						get_comment_time( 'c' ),
    						// translators: 1: date, 2: time
    						sprintf( __( '%1$s at %2$s', 'retrotale' ), get_comment_date(''), get_comment_time() )
    					);
    				?>
    			</div><!-- .comment-meta -->
    
    			<?php if ( '0' == $comment->comment_approved ) : ?>
    				<p class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.', 'retrotale' ); ?></p>
    			<?php endif; ?>
    
    			<div class="comment-content comment">
    				<?php comment_text(); ?>
    			 <div class="reply">
    			   <?php comment_reply_link( array_merge( $args, array( 'reply_text' => __( 'Reply', 'retrotale' ), 'after' => ' <span>&darr;</span>', 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?>
    			</div><!-- .reply -->
    			   <?php edit_comment_link( __( 'Edit', 'retrotale' ), '<p class="edit-link">', '</p>' ); ?>
    			</div><!-- .comment-content -->
    		</div><!-- #comment-## -->
    	<?php
    		break;
    	endswitch;
    }
    endif;
    
    /**
     * Function for adding custom classes to the menu objects.
     *
    */
    add_filter( 'wp_nav_menu_objects', 'retrotale_filter_menu_class', 10, 2 );
    function retrotale_filter_menu_class( $objects, $args ) {
    
        $ids        = array();
        $parent_ids = array();
        $top_ids    = array();
        foreach ( $objects as $i => $object ) {
    
            if ( 0 == $object->menu_item_parent ) {
                $top_ids[$i] = $object;
                continue;
            }
    
            if ( ! in_array( $object->menu_item_parent, $ids ) ) {
                $objects[$i]->classes[] = 'first-menu-item';
                $ids[]          = $object->menu_item_parent;
            }
    
            if ( in_array( 'first-menu-item', $object->classes ) )
                continue;
    
            $parent_ids[$i] = $object->menu_item_parent;
        }
    
        $sanitized_parent_ids = array_unique( array_reverse( $parent_ids, true ) );
    
        foreach ( $sanitized_parent_ids as $i => $id )
            $objects[$i]->classes[] = 'last-menu-item';
    
        return $objects;
    }
    
    /**
     * Function for rendering CSS3 features in IE.
     *
    */
    add_filter( 'wp_head' , 'retrotale_pie' );
    function retrotale_pie() { ?>
    <!--[if IE]>
    <style type="text/css" media="screen">
    #container-shadow, .menu-box-wrapper, .top-navigation-wrapper {
            behavior: url("<?php echo get_template_directory_uri() . '/css/pie/PIE.php'; ?>");
            zoom: 1;
    }
    </style>
    <![endif]-->
    <?php }
    
    /**
     * Include the TGM_Plugin_Activation class.
     *
    */
    if ( current_user_can ( 'install_plugins' ) ) {
    require_once get_template_directory() . '/class-tgm-plugin-activation.php';
    add_action( 'retrotale_register', 'retrotale_my_theme_register_required_plugins' );
    
    function retrotale_my_theme_register_required_plugins() {
    
    $plugins = array(
    		array(
    			'name'     => 'Breadcrumb NavXT',
    			'slug'     => 'breadcrumb-navxt',
    			'required' => false,
    		),
        array(
    			'name'     => 'The Events Calendar',
    			'slug'     => 'the-events-calendar',
    			'required' => false,
    		),
    ); 
    
    $config = array(
    		'domain'       => 'retrotale',
        'menu'         => 'install-my-theme-plugins',
    		'strings'    	 => array(
    		'page_title'             => __( 'Install Recommended Plugins', 'retrotale' ),
    		'menu_title'             => __( 'Install Plugins', 'retrotale' ),
    		'instructions_install'   => __( 'The %1$s plugin is required for this theme. Click on the big blue button below to install and activate %1$s.', 'retrotale' ),
    		'instructions_activate'  => __( 'The %1$s is installed but currently inactive. Please go to the <a href="%2$s">plugin administration page</a> page to activate it.', 'retrotale' ),
    		'button'                 => __( 'Install %s Now', 'retrotale' ),
    		'installing'             => __( 'Installing Plugin: %s', 'retrotale' ),
    		'oops'                   => __( 'Something went wrong with the plugin API.', 'retrotale' ), // */
    		'notice_can_install'     => __( 'This theme requires the %1$s plugin. <a href="%2$s"><strong>Click here to begin the installation process</strong></a>. You may be asked for FTP credentials based on your server setup.', 'retrotale' ),
    		'notice_cannot_install'  => __( 'Sorry, but you do not have the correct permissions to install the %s plugin. Contact the administrator of this site for help on getting the plugin installed.', 'retrotale' ),
    		'notice_can_activate'    => __( 'This theme requires the %1$s plugin. That plugin is currently inactive, so please go to the <a href="%2$s">plugin administration page</a> to activate it.', 'retrotale' ),
    		'notice_cannot_activate' => __( 'Sorry, but you do not have the correct permissions to activate the %s plugin. Contact the administrator of this site for help on getting the plugin activated.', 'retrotale' ),
    		'return'                 => __( 'Return to Recommended Plugins Installer', 'retrotale' ),
    ),
    );
    retrotale_tgmpa( $plugins, $config );
    }}
    }
    ?>

    Ich bitte um schnelle Hilfe!
    Marc-Sebastian

Ansicht von 1 Antwort (von insgesamt 1)
  • Moderator Torsten Landsiedel

    (@zodiac1978)

    Suche doch mal in allen Theme-Dateien nach „get_subcategory_terms“. Irgendwo muss die Funktion ja zweimal definiert werden.

    Gruß, Torsten

Ansicht von 1 Antwort (von insgesamt 1)
  • Das Thema „Fehlermeldung Cannot redeclare get_subcategory_terms()“ ist für neue Antworten geschlossen.