2016-10-01 5 views
1

Ich muss eine Zeichenfolge in der Vorlage der Komponente eines Themas ändern. Sagen wir, das ist in der header.php. In meinem Child-Theme erstelle ich eine header.php-Datei, um das Theme header.php des Elterns zu überschreiben.Wordpress Kind Thema sehr kleine Änderung

Meine Frage ist, was schreibe ich in meine header.php? Kopiere ich alles aus der Elternversion und ändere einfach die Zeichenfolge? Wenn ja, wie stelle ich sicher, dass ich Updates bekomme, weil ich jetzt und für immer diese Version der header.php benutze, da sie immer die Version des Elternteils überschreiben wird. Wenn "Nein" als was mache ich? Eine der Dateien ist nur eine Vorlage, aber ich muss auch eine kleine Änderung in der Datei hook.php machen ... Wie gehe ich damit um?

Beispiel: Dies ist eine Beispieldatei aus dem Thema meiner Eltern. Alles, was ich ändern möchte, ist "Lesen Sie mehr" zu "Прочети Още".

<?php 
if (! class_exists('WPBakeryShortCode')) { 
    return; 
} 

class WPBakeryShortCode_UpsideGridService extends WPBakeryShortCode { 

    protected function content($atts, $content = null) { 
     ob_start(); 
     $atts = vc_map_get_attributes($this->getShortcode(), $atts); 
     extract($atts); 

     $up_tags = array(); 
     if (!empty($tag_slugs)) { 
      $up_tags = explode(',', $tag_slugs); 
     } 

     $query = array(
      'post_type'  => array('service'), 
      'posts_per_page' => (int)$total_item, 
      'post_status' => array('publish') 
     ); 

     if ($up_tags) { 
      $query['tax_query'] = array(
       array(
        'taxonomy' => 'service-tag', 
        'field' => 'slug', 
        'terms' => $up_tags 
       ), 
      ); 
     } 

     $results = new WP_Query($query); 
     if ($results->have_posts()) : 
      switch ($element_layout) { 

       case 'three_items_small_size': 
        $widget_before = '<div class="kopa-ab"><div class="wrapper"><div class="row"><div class="col-md-12"><div class="widget kopa-intro-3-widget">'; 
        $widget_after = '</div></div></div></div></div>'; 
        $widget_head = $this->the_head($element_layout, $title, $content); 
        $widget_before_loop = '<div class="widget-content"><ul class="row ul-mh">'; 
        $widget_after_loop = '</ul></div>'; 
        break; 

       case 'four_items': 
        $widget_before = '<div class="widget kopa-service-1-widget kopa-area-dark">'; 
        $widget_after = '</div>'; 
        $widget_head = $this->the_head($element_layout, $title, $content); 
        $widget_before_loop = '<div class="widget-content"><ul class="ul-mh row">'; 
        $widget_after_loop = '</ul></div>'; 
        break; 

       case 'three_items_big_size': 
        $widget_before = '<div class="widget kopa-service-2-widget">'; 
        $widget_after = '</div>'; 
        $widget_head = $this->the_head($element_layout, $title, $content); 
        $widget_before_loop = '<div class="widget-content"><ul class="ul-mh row">'; 
        $widget_after_loop = '</ul></div>'; 
        break; 

       case 'five_items': 
        $widget_before = '<div class="widget kopa-service-3-widget">'; 
        $widget_after = '</div>'; 
        $widget_head = $this->the_head($element_layout, $title, $content); 
        $widget_before_loop = '<div class="widget-content"><div class="kopa-masonry-2"><ul class="kopa-masonry-wrap">'; 
        $widget_after_loop = '</ul></div></div>'; 
        break; 
      } 

      echo wp_kses_post($widget_before); 
       echo wp_kses_post($widget_head); 
        echo wp_kses_post($widget_before_loop); 
         while ($results->have_posts()) { 
          $results->the_post(); 
          $this->the_loop($element_layout, $element_width, $atts); 
         } 
         wp_reset_postdata(); 
        echo wp_kses_post($widget_after_loop); 
      echo wp_kses_post($widget_after); 
     endif; 

     $output = ob_get_clean(); 
     return $output; 
    } 

    public function the_loop($element_layout='four_items', $element_width='3', $atts = array()) { 
     extract($atts); 

     if ('5' == $element_width) { 
      $item_class = 'ms-item-2 col-custom-5'; 
     } else { 
      $item_class = sprintf('col-md-%s col-sm-%s col-xs-12', esc_attr($element_width), esc_attr($element_width)); 
     } 
     $service_linkto = get_post_meta(get_the_ID(), 'upside-kidhouse-linkto', true); 
     if (empty($service_linkto)) { 
      $service_linkto = get_the_permalink(); 
     } 
     $service_icon = get_post_meta(get_the_ID(), 'upside-kidhouse-icon', true); 
     if (false === strpos($service_icon, 'fa ')) { 
      $service_icon = 'fa ' . $service_icon; 
     } 
     $service_title = get_the_title(); 
     if (! isset($excerpt_length) || empty($excerpt_length)) { 
      $excerpt_length = 55; 
     } 
     $GLOBALS['upside_excerpt_length'] = (int) $excerpt_length; 
     add_filter('excerpt_length', 'upside_set_excerpt_length'); 
     switch ($element_layout) { 
      case 'three_items_small_size': ?> 
       <li class="<?php echo esc_attr($item_class); ?>"> 
        <article class="entry-item"> 
         <?php if (! empty($service_icon)) : ?> 
          <span class="kopa-icon-1 <?php echo esc_attr($service_icon); ?>"></span> 
         <?php endif; ?> 
         <div class="entry-content"> 
          <?php if (! empty($service_title)) : ?> 
           <h4 class="entry-title"><a href="<?php echo esc_url($service_linkto); ?>" title="<?php echo wp_kses_post($service_title); ?>"><?php echo wp_kses_post($service_title); ?></a></h4> 
          <?php endif; ?> 
          <?php the_excerpt(); ?> 
         </div> 
         <a href="<?php echo esc_url($service_linkto); ?>" class="more-link-1"><i class="fa fa-angle-right"></i></a> 
        </article> 
       </li> 
       <?php break; 
      case 'four_items': ?> 
        <li class="<?php echo esc_attr($item_class); ?>"> 
         <div class="sv-item-1"> 
          <?php if (! empty($service_title)) : ?> 
           <h4><a href="<?php echo esc_url($service_linkto); ?>"><?php echo wp_kses_post($service_title);?></a></h4> 
          <?php endif; 
          if (! empty($service_icon)) : 
          ?> 
           <div class="sv-icon-1"> 
            <a href="<?php echo esc_url($service_linkto); ?>"> 
             <span class="<?php echo esc_attr($service_icon); ?>"></span> 
            </a> 
           </div> 
          <?php endif; ?> 
          <?php the_excerpt(); ?> 
         </div> 
        </li> 
       <?php 
       break; 
      case 'three_items_big_size': 
      ?> 
       <li class="<?php echo esc_attr($item_class); ?>"> 
        <div class="kopa-item-wrap"> 
         <div class="kopa-item sv-item-2"> 
          <div class="sv-item-content"> 
           <?php if (! empty($service_icon)) : ?> 
            <span class="<?php echo esc_attr($service_icon); ?>"></span> 
           <?php endif; ?> 
           <?php if (! empty($service_title)) : ?> 
            <h5><a href="<?php echo esc_url($service_linkto); ?>" title="<?php echo wp_kses_post($service_title); ?>"><?php echo wp_kses_post($service_title); ?></a></h5> 
           <?php endif; 
            the_excerpt(); 
           ?> 

           <a class="kopa-btn-3" href="<?php echo esc_url($service_linkto); ?>"><?php esc_html_e('+ Read More', 'upside'); ?></a> 
          </div> 
         </div> 
        </div> 
       </li> 

      <?php 
       break; 

      case 'five_items': 
       ?> 
        <li class="<?php echo esc_attr($item_class); ?>"> 
         <article class="entry-item"> 
          <?php if (! empty($service_icon)) : ?> 
           <div class="entry-icon-1"> 
            <span class="<?php echo esc_attr($service_icon); ?>"></span> 
           </div> 
          <?php endif;?> 
          <h4 class="entry-title"><a href="<?php echo esc_url($service_linkto); ?>"><?php echo wp_kses_post($service_title); ?></a></h4> 
         </article> 
        </li> 
       <?php 
       break; 
     } 

     remove_filter('excerpt_length', 'upside_set_excerpt_length'); 
    } 

    public function the_head($element_layout='four_items', $title, $content) { 
     $output = ''; 
     switch ($element_layout) { 
      case 'three_items_small_size': 
      case 'four_items': 
      case 'three_items_big_size': 
       if (! empty($title) || ! empty($content)) { 
        $output .= '<header class="widget-hd-1">'; 
         if (! empty($title)) { 
          $output .= sprintf('<h3 class="widget-title s1">%s</h3>', esc_html($title)); 
         } 
         if (! empty($content)) { 
          $output .= sprintf('<p>%s</p>', wp_kses_post($content)); 
         } 
        $output .= '</header>'; 
       } 
       break; 
      case 'five_items': 
       if (! empty($title) || ! empty($content)) { 
        $output .= '<header class="widget-hd-1">'; 
        if (! empty($title)) { 
         $output .= sprintf('<h3 class="widget-title s4">%s</h3>', esc_html($title)); 
        } 
        if (! empty($content)) { 
         $output .= sprintf('<p>%s</p>', wp_kses_post($content)); 
        } 
        $output .= '</header>'; 
       } 
       break; 
     } 
     return $output; 
    } 
} 

add_action('vc_before_init', 'upside_map_grid_service'); 
function upside_map_grid_service() { 
    $grid_cols_list = array(
     array('label' => esc_attr__("6 items", 'upside'), 'value' => 2), 
     array('label' => esc_attr__("5 items", 'upside'), 'value' => 5), 
     array('label' => esc_attr__("4 items", 'upside'), 'value' => 3), 
     array('label' => esc_attr__("3 items", 'upside'), 'value' => 4), 
     array('label' => esc_attr__("2 items", 'upside'), 'value' => 6) 
    ); 

    vc_map(array(
     "name" => esc_attr__("Service Grid",'upside'), 
     "base" => "UpsideGridService", 
     'category' => esc_attr__('Upside', 'upside'), 
     'description' => esc_attr__('Display some services.', 'upside'), 
     "icon" => apply_filters('upside_k_get_shortcode_icon', 'upside-icon', 'UpsideGridService'), 
     "params" => array(
      array(
       "type" => "textfield", 
       "admin_label" => true, 
       "group" => esc_attr__("General", 'upside'), 
       "heading" => esc_attr__("Title", 'upside'), 
       "param_name" => "title", 
       "value" =>"", 
       "description" => '', 
      ), 
      array(
       "type" => "textarea", 
       "group" => esc_attr__("General", 'upside'), 
       "heading" => esc_attr__("Description", 'upside'), 
       "param_name" => "content", 
       "value" => "", 
       "description" => '', 
      ), 
      array(
       'type' => 'exploded_textarea', 
       "group" => esc_attr__("General", 'upside'), 
       'heading' => esc_attr__('Tag slugs', 'upside'), 
       'param_name' => 'tag_slugs', 
       'description' => esc_attr__('Enter tag slugs (Note: divide tag slugs with linebreaks (Enter)).', 'upside'), 
      ), 
      array(
       'type' => 'dropdown', 
       "group" => esc_attr__("General", 'upside'), 
       'heading' => esc_attr__('Display type', 'upside'), 
       'param_name' => 'element_layout', 
       'value' => array(
        array('label' => "Default four items per row", 'value' => 'four_items'), 
        array('label' => "Default three items per row with big size", 'value' => 'three_items_big_size'), 
        array('label' => "Default three items per row with small size", 'value' => 'three_items_small_size'), 
        array('label' => "Default five items per row", 'value' => 'five_items'), 
       ), 
       'std' => 'four_items', 
       'edit_field_class' => 'vc_col-sm-12 vc_column', 
       'description' => esc_attr__('Select layout to display.', 'upside'), 
      ), 
      array(
       "type" => "textfield", 
       "group" => esc_attr__("General", 'upside'), 
       "heading" => esc_attr__("Total items", 'upside'), 
       "param_name" => "total_item", 
       "value" =>"12", 
       "description" => '', 
      ), 
      array(
       'type' => 'dropdown', 
       "group" => esc_attr__("General", 'upside'), 
       'heading' => esc_attr__('Number items per row', 'upside'), 
       'param_name' => 'element_width', 
       'value' => $grid_cols_list, 
       'std' => '3', 
       'edit_field_class' => 'vc_col-sm-12 vc_column', 
       'description' => esc_attr__('Select number of services per row.', 'upside'), 
      ), 
      array(
       "type" => "textfield", 
       "group" => esc_attr__("General", 'upside'), 
       "heading" => esc_attr__("Number words of excerpt to show", 'upside'), 
       "param_name" => "excerpt_length", 
       "value" =>"55", 
       "description" => '', 
       'dependency' => array(
        'element' => 'element_layout', 
        'value' => array('four_items', 'three_items_big_size', 'three_items_small_size') 
       ) 
      ), 
     ) 
    )); 

} 

Antwort

1

Wenn Sie mit einem Kind Thema arbeiten, werden Sie alle Inhalte aus der ursprünglichen header.php Datei im übergeordneten Thema in eine Datei in Ihrem Kind Themenordner mit dem gleichen Namen zu kopieren. Nachdem Sie die Datei header.php in Ihrem untergeordneten Themenordner gespeichert haben, können Sie den Inhalt öffnen und bearbeiten.

Wenn Sie ein untergeordnetes Thema verwenden, müssen Sie die aktualisierte Datei header.php aus dem übergeordneten Thema kopieren. Wenn Sie die Anpassung nicht verlieren möchten, sollten Sie einen Vergleich zwischen dem Header auf dem untergeordnetes Thema und die neue aktualisierte Kopfzeile des übergeordneten Elements.

Einige verfügbare Software bietet Vergleichsoptionen zwischen zwei Dateien, um Änderungen zu erkennen, die Sie vorgenommen haben.

+0

Also der untergeordnete Thema Workflow ist: Ich erstelle eine Datei header.php und lege es in den gleichen relativen Pfad. Ich kopiere den Inhalt der ursprünglichen header.php, ändere den Text und speichere ihn. Wenn das Thema aktualisiert wird, vergleiche ich meine header.php mit der neuen. Wenn ich welche manuell manuell kopieren-einfügen-Änderungen anwende? – mp3por

0
  1. Erstellen Sie untergeordneten Ordner in Ihrem WP-Themenordner im gleichen Verzeichnis wie Ihr übergeordnetes Thema, z. myTheme-Kind
  2. Kopieren Sie die komplette header.php in diesem Verzeichnis, aber mit dieser Linie der Änderung
<a class="kopa-btn-3" href="<?php echo esc_url($service_linkto); ?>"><?php esc_html_e('+ Прочети Още', 'upside'); ?></a> 
  1. Wp hat Vorrang vor allen .php's von Mutter Thema mit den .php-Dateien haben Sie in myTheme-Kind

    Update:

Alternative Lösung mit Wp Haken mit add_filter Funktion:

  1. functions.php erstellen in myTheme-Kind
  2. Kopieren hinein folgenden Code:
<?php 
/* Child theme functions file 
*/ 

function custom_readMore($more) 
{ return '<a class="kopa-btn-3" href="<?php echo > > esc_url($service_linkto); ?>"><?php esc_html_e('+ Прочети Още', 'upside'); ?></a>'; } 

add_filter('excerpt_more', 'custom_readMore'); 
    ?> 

Die Funktionen. php ist eine Ausnahme, Wp schaut immer zuerst in die functions.php des übergeordneten Themes und dann führt die Funktionen in myTheme-child aus.

Die header.php in myTheme-Kind ersetzt die Datei von übergeordneten Thema, so dass Sie die Updates von Ihrem übergeordneten Thema verlieren.

Hoffe, das hilft!

+0

Richtig. Das habe ich bisher gemacht. Aber wenn ich es so mache, was passiert, wenn das Thema aktualisiert wird? Wenn die Entwickler des Themas die header.php ändern, um einen Fehler zu beheben, muss ich ihre neue Version kopieren, die sehr unprogrammatisch klingt. – mp3por

+0

Ok ich verstehe, dann müssen Sie in functions.php einhängen. Ich habe meine Antwort aktualisiert! –