2013-04-08 3 views
1

Надеюсь, кто-то может мне помочь.Загрузите слова, а не буквы [WordPress/PHP]

Я работаю над сайтом, где я установил Wordpress. На главной странице у меня есть небольшой div, где я хочу вывести первые 10 слов с другой страницы с помощью pageID. На данный момент он почти работает, но вместо того, чтобы загружать 10 слов, он загружается в 10 букв.

Пример:
Вместо: Здравствуйте, меня зовут Эрвин и это тест
Он загружает: Привет моего Нам

Что я делаю неправильно?

Я использую следующий PHP в functions.php:

if(!function_exists('getPageContent')) 
{ 
    function getPageContent($pageId,$num_words) 
    { 
     if(!is_numeric($pageId)) 
     { 
      return; 
     } 
     global $wpdb; 
     $nsquery = 'SELECT DISTINCT * FROM ' . $wpdb->posts . 
     ' WHERE ' . $wpdb->posts . '.ID=' . $pageId; 
     $post_data = $wpdb->get_results($nsquery); 
     if(!empty($post_data)) 
     { 
      foreach($post_data as $post) 
      { 
       $text_out=nl2br($post->post_content); 
       $text_out=str_replace(']]>', ']]>', $text_out); 
       $text_out = strip_tags($text_out); 
       return substr($text_out,0,$num_words); 

      } 
     } 
    }} 



И я использую следующую строку для загрузки содержимого:
(где 89 является моя страница ID)

echo getPageContent(89,10); 

ответ

0

How to select first 10 words of a sentence? - тот же самый вопрос. Просто используйте implode(' ', array_slice(explode(' ', $text_out), 0, $num_words)); вместо substr($text_out,0,$num_words);

+0

это лучшее и быстрое решение в сочетании с кодом, который я написал выше, спасибо! –

1

Этот wil л экстракта первые 10 слов вашей строки

$text_out = "Hello my name is Erwin and this is a test and this is another test"; 
$num_words = 10; 
echo implode(' ', array_slice(explode(' ', $text_out), 0, $num_words)); 

Выход

Hello my name is Erwin and this is a test 
+0

Спасибо так много для ваш быстрый ответ, но это другая проблема. Я знаю, что мне нужно изменить 10 на 32, чтобы загрузить первые 32 буквы, но я хочу, чтобы я мог загружать первые слова. (потому что текст на другой странице может быть разным каждый день, и я не хочу постоянно считать буквы. Я просто хочу, чтобы сценарий автоматически загружал первые слова :) –

+0

использовать функцию 'strlen', он автоматически подсчитывает длина строки, вот руководство http://php.net/manual/en/function.strlen.php –

+0

, так что вы хотите только 1-е слово в качестве вывода? –

0

Существует функция от WordPress:

the_excerpt(); 

, который делает это точно. Он показывает ... отрывок статьи или страницы и ссылку в конце. Вы можете настроить длину, используя аргумент the_excerpt($length), немного модифицирующий функцию.

Источник: http://codex.wordpress.org/Function_Reference/the_excerpt

+0

Спасибо за ваш ответ! Я тоже нашел это, но каким-то образом я не могу подключить его к определенному идентификатору страницы. Он просто загружает первые 10 слов страницы, на которой я сейчас включен, и она не выводит содержимое с другой страницы –

+0

, потому что вам, вероятно, придется загрузить файл, содержащий функцию или что-то в этом роде. – aleation

+0

мои навыки с php являются низкими для того, что вы только что сказали haha! –

0

Здесь $num_words = 10

это означает substr разбивает строку из символа 0 to 10

если вы хотите всю строку, то вы должны повторить

echo getPageContent(89,32); 
Смежные вопросы