Тема twentytwelve

Avatar

Від Termin 07-05-2013 18:48:04

Сусід · 103 повідомлень
AzzePis wrote

спробуйте http://bavotasan.com/2009/limiting-the- ... wordpress/

Спробував, не працює.

Avatar

Від mr.psiho 07-05-2013 20:12:11

Сусід · 160 повідомлень
Termin wrote
AzzePis wrote

спробуйте http://bavotasan.com/2009/limiting-the- ... wordpress/

Спробував, не працює.

Дивно, що не працює. А ви записали функцію виводу у шаблоні, де треба, наприклад так:

<?php echo excerpt(25); ?>

Чи лише копіювали перші дві функції звідти собі у фанкшинз.пхп?


Сайти на WordPress будь якого рівня складності. Сайти на LiveStreet будь якого рівня складності. А ще ми любимо корів)) Звертайтесь. ;)

Avatar

Від Termin 08-05-2013 14:11:28

Сусід · 103 повідомлень
mr.psiho wrote
Termin wrote
AzzePis wrote

спробуйте http://bavotasan.com/2009/limiting-the- ... wordpress/

Спробував, не працює.

Дивно, що не працює. А ви записали функцію виводу у шаблоні, де треба, наприклад так:

<?php echo excerpt(25); ?>

Чи лише копіювали перші дві функції звідти собі у фанкшинз.пхп?

Копіював фанкшинз

    function excerpt($limit) {
    $excerpt = explode(' ', get_the_excerpt(), $limit);
    if (count($excerpt)>=$limit) {
    array_pop($excerpt);
    $excerpt = implode(" ",$excerpt).'...';
    } else {
    $excerpt = implode(" ",$excerpt);
    }	
    $excerpt = preg_replace('`\[[^\]]*\]`','',$excerpt);
    return $excerpt;
    }
     
    function content($limit) {
    $content = explode(' ', get_the_content(), $limit);
    if (count($content)>=$limit) {
    array_pop($content);
    $content = implode(" ",$content).'...';
    } else {
    $content = implode(" ",$content);
    }	
    $content = preg_replace('/\[.+\]/','', $content);
    $content = apply_filters('the_content', $content);
    $content = str_replace(']]>', ']]&gt;', $content);
    return $content;
    }

в functions.php.

Копіював код:

<?php echo excerpt(25); ?>

[code2=javascript:292h0c8m]<?php if ( is_search() ) : // Only display Excerpts for Search ?>
        <div class="entry-summary">
            <?php echo excerpt(25); ?>
        </div><!-- .entry-summary -->
        <?php else : ?>
        <div class="entry-content">
            <?php the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentytwelve' ) ); ?>
            <?php wp_link_pages( array( 'before' => '<div class="page-links">' . __( 'Pages:', 'twentytwelve' ), 'after' => '</div>' ) ); ?>
        </div><!-- .entry-content -->
        <?php endif; ?>[/code2:292h0c8m]
в content.php

Не працює!

Avatar

Від AzzePis 08-05-2013 15:16:01

Administrator · 1,021 повідомлень

в content.php потрібно ось це
[code2=php:2u5s6qzo]<?php the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentytwelve' ) ); ?>[/code2:2u5s6qzo]

замінити на це:

[code2=php:2u5s6qzo]<?php echo excerpt(25); ?>[/code2:2u5s6qzo]

або на це:

[code2=php:2u5s6qzo]<?php echo content(25); ?>[/code2:2u5s6qzo]

на мою думку, правильніше на друге


Український хостинг для WordPress | Шаблони та плагіни для WordPress українською
Тут можна купити домен за найкращою ціною

Avatar

Від Termin 08-05-2013 22:03:22

Сусід · 103 повідомлень

Зробив так:

в function.php

[code2=php:1il674s8]function content($limit) {
  $content = explode(' ', get_the_content(), $limit);
  if (count($content)>=$limit) {
    array_pop($content);
    $content = implode(" ",$content).'... <a href="'. get_permalink($post->ID) . '">Continue &raquo;</a>';
  } else {
    $content = implode(" ",$content);
  }   
  $content = preg_replace('/\[.+\]/','', $content);
  $content = apply_filters('the_content', $content);
  $content = str_replace(']]>»', ']]&gt;&raquo;', $content);
  return $content;
}[/code2:1il674s8]

в content.php

<?php echo content(25); ?>

В css додав рядок font-weight: normal ст.792 тому що текст чомусь став жирний.

[code2=css:1il674s8].entry-content p, .entry-summary p, .comment-content p, .mu_register p {
    font-weight: normal;
    line-height: 1.71429;
    margin: 0 0 1.71429rem;
}[/code2:1il674s8]

Спрацював код 🙂

Але як застосувати кореной код теми twentytwelve 

( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentytwelve' ) )

в нову функцію?

 
.....
$content = implode(" ",$content).'... <a href="'. get_permalink($post->ID) . '">Continue &raquo;</a>';
....
Avatar

Від mr.psiho 09-05-2013 09:00:49

Сусід · 160 повідомлень

Змінювати функцію the_content() не надто хороше рішення, нмд. На ній зав'язано багато чого. І якщо її змінити, то щось десь може вилізти "не те".


Сайти на WordPress будь якого рівня складності. Сайти на LiveStreet будь якого рівня складності. А ще ми любимо корів)) Звертайтесь. ;)

Avatar

Від Termin 09-05-2013 11:21:40

Сусід · 103 повідомлень
mr.psiho wrote

Змінювати функцію the_content() не надто хороше рішення, нмд. На ній зав'язано багато чого. І якщо її змінити, то щось десь може вилізти "не те".

Зі святом перемоги!

Різниці немає, в excerpt код теж відрізняється від шаблонного.

$excerpt = implode(" ",$excerpt).'... <a href="'. get_permalink($post->ID) . '">Continue &raquo</a>';
Avatar

Від AzzePis 09-05-2013 12:52:07

Administrator · 1,021 повідомлень

у functions.php додати
[code2=php:336ugtvk]add_filter("the_content", "plugin_myContentFilter");

  function plugin_myContentFilter($content)
  {
    // Take the existing content and return a subset of it
    return substr($content, 0, 300);
  }[/code2:336ugtvk]


Український хостинг для WordPress | Шаблони та плагіни для WordPress українською
Тут можна купити домен за найкращою ціною

Avatar

Від mr.psiho 09-05-2013 17:16:16

Сусід · 160 повідомлень
AzzePis wrote

у functions.php додати
[code2=php:3p5zrsr2]add_filter("the_content", "plugin_myContentFilter");

  function plugin_myContentFilter($content)
  {
    // Take the existing content and return a subset of it
    return substr($content, 0, 300);
  }[/code2:3p5zrsr2]

Та ні, це принципово інше.
У попередній функції Терміна контент (по суті - рядок) перетворювався у масив з розділенням в пробіл. І та функція ніколи не обріже слово, бо слова не містять пробіли. І там ліміт, наприклад, у "10" означає, що буде показано лише 10 перших слів.
Тут ти пишеш функцію, що тупо обрізає рядок по символах. У твоєму прикладі буде показано перші 300 символів - будь то пробіли, букви чи цифри. Слова можуть і шзв будуть обрізані. І що найгірше, то це те, що функція

substr

не є безпечною по відношенню до кириличних символів. Замість неї треба застосовувати

mb_substr

плюс вказувати кодування.


Сайти на WordPress будь якого рівня складності. Сайти на LiveStreet будь якого рівня складності. А ще ми любимо корів)) Звертайтесь. ;)

Avatar

Від Termin 09-05-2013 17:33:54

Сусід · 103 повідомлень
mr.psiho wrote
AzzePis wrote

у functions.php додати
[code2=php:2s8jab0x]add_filter("the_content", "plugin_myContentFilter");

  function plugin_myContentFilter($content)
  {
    // Take the existing content and return a subset of it
    return substr($content, 0, 300);
  }[/code2:2s8jab0x]

Та ні, це принципово інше.
У попередній функції Терміна контент (по суті - рядок) перетворювався у масив з розділенням в пробіл. І та функція ніколи не обріже слово, бо слова не містять пробіли. І там ліміт, наприклад, у "10" означає, що буде показано лише 10 перших слів.
Тут ти пишеш функцію, що тупо обрізає рядок по символах. У твоєму прикладі буде показано перші 300 символів - будь то пробіли, букви чи цифри. Слова можуть і шзв будуть обрізані. І що найгірше, то це те, що функція

substr

не є безпечною по відношенню до кириличних символів. Замість неї треба застосовувати

mb_substr

плюс вказувати кодування.

Так повертається вже існуючий зміст:

return mb_substr($content, 0, 300);

фільтр я не перевіряв, тому що якщо немає рішення вказати кількість слів, а не символів, тоді втрачається сенс у цьому в загалі, і застосувати кореной код теми twentytwelve .