WordPress the_content проблема?

#php #wordpress

#php #wordpress

Вопрос:

Я использую функцию, чтобы определить, какова длина моих статей (ниже). Проблема в том, что на моей индексной странице the_content, похоже, «разделен» моими <!-- more --> тегами.

Например, моя статья имеет длину 3000 символов, но на моей индексной странице отображается только 500 символов, прежде чем появится ссылка «Подробнее». Моя функция использует 500 символов в качестве the_content вместо фактических 3000 символов. Длина отображается как короткая, хотя полные статьи считаются длинными.

Однако на полной странице статьи, где показаны все 3000 символов, функция работает нормально.

Теперь мой вопрос: есть ли альтернатива для the_content, которая ВСЕГДА использует полную статью вместо того, что в данный момент отображается на странице?

 function wcount(){
ob_start();
the_content();
$content = ob_get_clean();
$length = strlen($content);
if ($length > 2000) { 
        return 'Long'; 

    } else if ($length > 1000) { 
        return 'Medium'; 

    } else if ($length <  1000) { 
        return 'Short'; 
    }
}
 

Комментарии:

1. Что это за код? Это что-то из вашего шаблона или что-то, что вы предлагаете?

2. Я добавил функцию под вопросом.

3. Что вы имеете в виду? Откуда взялся этот код — это что-то, что вы написали, или что-то из вашего шаблона?

4. Код находится в моем functions.php . Я вызываю это с помощью <?php echo $wcount(); ?> в моем шаблоне. Я надеюсь, что это имеет смысл.

5. Правильно! Если вы хотите отобразить целое неотредактированное сообщение, зачем вы считаете слова? извините, что продолжаю задавать qs, просто пытаюсь получить полную картину…

Ответ №1:

Попробуйте это:

 function wcount($post) {
    $length = strlen($post->post_content);
    if ($length > 2000) { 
            return 'Long'; 

        } else if ($length > 1000) { 
            return 'Medium'; 

        } else if ($length <  1000) { 
            return 'Short'; 
        }
}
 

Затем вызовите wcount() из цикла post с чем-то вроде echo wcount($post);

Ответ №2:

Попробуйте глобальный $more; $more = 0; the_content();

Комментарии:

1. Привет, извините, я сделал это на своем телефоне, поэтому поторопился. Вы поместили это в свой шаблон, где вы хотите, чтобы отображался контент — так что вместо просто <?php the_content ?>

2. похоже, ты понял это сверху 🙂