На страницу 1, 2 След. |
|
|
Здравствуйте, уважаемые форумчане! Столкнулся с проблемой и нужна ваша помощь, может поможете. Дело в том, что недавно, совершенно случайно обнаружил на блоге (Wordpress) вот такую ссылку:
<img title="Read More..." src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="" data-wp-more="" data-mce-resize="false" data-mce-placeholder="1" />
В текстовом редакторе в режиме "Визуально" убрал тег "More" и перешел в режим "Текст" и обнаружил искомую ссылку. Если удалить ее и поставить тег "More", то она появляется снова. Другими словами, удалить ее невозможно. И скрыта она именно под этим тегом, визуально ее не видно. Откуда, с какого файла она генерируется и как мне избавиться от этой бяки? |
|
|
|
|
|
Тег <img> это не линк, смотрите тег <a href="">.
data:image/gif говорит о том, что это картинка в виде кода, так иногда их делают в шаблонах.
Смотрите в файле functions.php код для read_more или, если там нет, то в index.php или файлах, вроде include и т.д. |
|
|
|
|
|
Декодируй base64, смени урл (на любой свой) и закодируй обратно
Это самое простое, потом можешь искать и кавырять коды столько сколько нужно |
|
|
|
|
|
Yabuti писал(а): |
Тег <img> это не линк, смотрите тег <a href="">.
data:image/gif говорит о том, что это картинка в виде кода, так иногда их делают в шаблонах.
Смотрите в файле functions.php код для read_more или, если там нет, то в index.php или файлах, вроде include и т.д.
|
То есть, насколько я понял, тег "More" выводится как картинка и никакого криминала в этом нет. Это не ссылка на внешний ресурс и можно больше не беспокоиться? |
|
|
|
|
|
Баяс, лучше удалить или изменить, т.к. может и какая-то хитрая бяка быть, в шаблонах бывают и в картинках код размещают. А код в base64 - это "GIF89a!,D;", т.е. стандартное начало gif-файла.
Удаляйте или закомментируйте вместе с обрамляющим картинку <a href="">, т.к. если удалить только картинку, то пустой линк все равно остается. |
|
|
|
|
|
* @param string $more_link_text Optional. Content for when there is more text.
* @param bool $strip_teaser Optional. Strip teaser content before the more text. Default is false.
*/
function the_content( $more_link_text = null, $strip_teaser = false) {
$content = get_the_content( $more_link_text, $strip_teaser );
/**
* Filter the post content.
*
* @since 0.71
*
* @param string $content Content of the current post.
*/
$content = apply_filters( 'the_content', $content );
$content = str_replace( ']]>', ']]>', $content );
echo $content;
}
/**
* Retrieve the post content.
*
* @since 0.71
*
* @param string $more_link_text Optional. Content for when there is more text.
* @param bool $stripteaser Optional. Strip teaser content before the more text. Default is false.
* @return string
*/
function get_the_content( $more_link_text = null, $strip_teaser = false ) {
global $page, $more, $preview, $pages, $multipage;
$post = get_post();
if ( null === $more_link_text )
$more_link_text = __( '(more…)' );
$output = '';
$has_teaser = false;
// If post password required and it doesn't match the cookie.
if ( post_password_required( $post ) )
return get_the_password_form( $post );
if ( $page > count( $pages ) ) // if the requested page doesn't exist
$page = count( $pages ); // give them the highest numbered page that DOES exist
$content = $pages[$page - 1];
if ( preg_match( '/<!--more(.*?)?-->/', $content, $matches ) ) {
$content = explode( $matches[0], $content, 2 );
if ( ! empty( $matches[1] ) && ! empty( $more_link_text ) )
$more_link_text = strip_tags( wp_kses_no_null( trim( $matches[1] ) ) );
$has_teaser = true;
} else {
$content = array( $content );
}
if ( false !== strpos( $post->post_content, '<!--noteaser-->' ) && ( ! $multipage || $page == 1 ) )
$strip_teaser = true;
$teaser = $content[0];
if ( $more && $strip_teaser && $has_teaser )
$teaser = '';
$output .= $teaser;
if ( count( $content ) > 1 ) {
if ( $more ) {
$output .= '<span id="more-' . $post->ID . '"></span>' . $content[1];
} else {
if ( ! empty( $more_link_text ) )
/**
* Filter the Read More link text.
*
* @since 2.8.0
*
* @param string $more_link_element Read More link element.
* @param string $more_link_text Read More text.
*/
$output .= apply_filters( 'the_content_more_link', ' <a href="' . get_permalink() . "#more-{$post->ID}\" class=\"more-link\">$more_link_text</a>", $more_link_text );
$output = force_balance_tags( $output );
}
}
Попробовал поудалять кое-что, сайт перестает работать. Ткните носом, будьте добры. |
|
|
|
|
|
Вот это удалить:
Код: |
<a href="' . get_permalink() . "#more-{$post->ID}\" class=\"more-link\">$more_link_text</a>
|
|
|
|
|
|
|
Yabuti писал(а): |
Вот это удалить:
Код: |
<a href="' . get_permalink() . "#more-{$post->ID}\" class=\"more-link\">$more_link_text</a>
|
|
Если удалить эту строку, сайт перестает работать, отдает ошибку 500 ( внутренняя ошибка сервера ). После того как восстанавливаю, все ОК. Что бы это значило? |
|
|
|
|
|
Баяс, а скобки и апострофы я не заметил, не очень хороший код, все вперемешку.
Замените строку
Код: |
$output .= apply_filters( 'the_content_more_link', ' <a href="' . get_permalink() . "#more-{$post->ID}\" class=\"more-link\">$more_link_text</a>", $more_link_text );
|
на такую строку
Код: |
$output .= apply_filters('the_content_more_link', '', $more_link_text);
|
Будет выдавать ошибку? |
|
|
|
|
|
Yabuti писал(а): |
Баяс, а скобки и апострофы я не заметил, не очень хороший код, все вперемешку.
Замените строку
Код: |
$output .= apply_filters( 'the_content_more_link', ' <a href="' . get_permalink() . "#more-{$post->ID}\" class=\"more-link\">$more_link_text</a>", $more_link_text );
|
на такую строку
Код: |
$output .= apply_filters('the_content_more_link', '', $more_link_text);
|
Будет выдавать ошибку?
|
Yabuti, заменил, ошибки нет, но код картинки на месте, то есть все так же, как и было. Может ли ссылка дублироваться в другом файле? |
|
|
|
|
|
код нужно постить в тегах вот так
Код: |
* @param string $more_link_text Optional. Content for when there is more text.
* @param bool $strip_teaser Optional. Strip teaser content before the more text. Default is false.
*/
function the_content( $more_link_text = null, $strip_teaser = false) {
$content = get_the_content( $more_link_text, $strip_teaser );
/**
* Filter the post content.
*
* @since 0.71
*
* @param string $content Content of the current post.
*/
$content = apply_filters( 'the_content', $content );
$content = str_replace( ']]>', ']]>', $content );
echo $content;
}
/**
* Retrieve the post content.
*
* @since 0.71
*
* @param string $more_link_text Optional. Content for when there is more text.
* @param bool $stripteaser Optional. Strip teaser content before the more text. Default is false.
* @return string
*/
function get_the_content( $more_link_text = null, $strip_teaser = false ) {
global $page, $more, $preview, $pages, $multipage;
$post = get_post();
if ( null === $more_link_text )
$more_link_text = __( '(more…)' );
$output = '';
$has_teaser = false;
// If post password required and it doesn't match the cookie.
if ( post_password_required( $post ) )
return get_the_password_form( $post );
if ( $page > count( $pages ) ) // if the requested page doesn't exist
$page = count( $pages ); // give them the highest numbered page that DOES exist
$content = $pages[$page - 1];
if ( preg_match( '/<!--more(.*?)?-->/', $content, $matches ) ) {
$content = explode( $matches[0], $content, 2 );
if ( ! empty( $matches[1] ) && ! empty( $more_link_text ) )
$more_link_text = strip_tags( wp_kses_no_null( trim( $matches[1] ) ) );
$has_teaser = true;
} else {
$content = array( $content );
}
if ( false !== strpos( $post->post_content, '<!--noteaser-->' ) && ( ! $multipage || $page == 1 ) )
$strip_teaser = true;
$teaser = $content[0];
if ( $more && $strip_teaser && $has_teaser )
$teaser = '';
$output .= $teaser;
if ( count( $content ) > 1 ) {
if ( $more ) {
$output .= '<span id="more-' . $post->ID . '"></span>' . $content[1];
} else {
if ( ! empty( $more_link_text ) )
/**
* Filter the Read More link text.
*
* @since 2.8.0
*
* @param string $more_link_element Read More link element.
* @param string $more_link_text Read More text.
*/
$output .= apply_filters( 'the_content_more_link', ' <a href="' . get_permalink() . "#more-{$post->ID}\" class=\"more-link\">$more_link_text</a>", $more_link_text );
$output = force_balance_tags( $output );
}
}
|
PS: найди новый шаб |
|
|
|
|
|
А кэш не включен?
Или попробуйте новую запись создать, будет ли у нее такая кнопка. |
|
|
|
|
|
Yabuti писал(а): |
А кэш не включен?
Или попробуйте новую запись создать, будет ли у нее такая кнопка.
|
Вчера добавил новую статью на блог, все было так же, как и раньше. Обнулял кеш и на блоге, и в браузере. Тут один товарищ вчера мне сказал вот что: для того чтобы уменьшить число запросов к серверу, мелкие картинки на сайте выводят с помощью кода base64. И все это реализуется через ccs. То есть вместо трех запросов (html + css + изображение), получаем всего два запроса (html + css). Вроде все логично и разумно, хочется ему верить. А вы что думаете по этому поводу? |
|
|
|
|
|
Так и есть, в CSS есть код этой картинки в виде кода.
Но непонятный момент с тем, что линк Read More все равно выводится.
Посмотрите еще в плагинах, может там есть плагин для автоматического создания Read More к записям на Главной и в других файлах темы поищите тег с Read More. |
|
|
|
|
|
Yabuti писал(а): |
Так и есть, в CSS есть код этой картинки в виде кода.
Но непонятный момент с тем, что линк Read More все равно выводится.
Посмотрите еще в плагинах, может там есть плагин для автоматического создания Read More к записям на Главной и в других файлах темы поищите тег с Read More.
|
Поискал с помощью "Total Commander", "Read More" встречается в 12 файлах. Например, в файле wp-includes есть интересующая нас запись:
// Replace Read More/Next Page tags with images
editor.on( 'BeforeSetContent', function( e ) {
if ( e.content ) {
if ( e.content.indexOf( '<!--more' ) !== -1 ) {
e.content = e.content.replace( /<!--more(.*?)-->/g, function( match, moretext ) {
return '<img src="' + tinymce.Env.transparentSrc + '" data-wp-more="' + moretext + '" ' +
'class="wp-more-tag mce-wp-more" title="Read More..." data-mce-resize="false" data-mce-placeholder="1" />';
});
}
|
|
|
|
|
|
|
|