Trim твиты из плагина - PullRequest
       39

Trim твиты из плагина

0 голосов
/ 13 марта 2019

Я использую этот плагин Wordpress

https://smashballoon.com/custom-twitter-feeds/demo

Я бы хотел урезать твиты до 120 символов.

У меня нет навыков JS и очень мало php - я попробовал это, но обнаружил, что вообще не актуально.

$twitter_feed = (strlen($twitter_feed) > 120) ? substr($twitter_feed,0,10).'...' : $twitter_feed;
enter code here

Я также попытался отредактировать свой рабочий код, чтобы обрезать заголовки своих сообщений так, чтобы они не работали.

    function custom_trim_my_tweet( $twitter_feed ) {
        global $uncode_vc_index; 
        if ( is_singular() && !$uncode_vc_index )
            return $twitter_feed;

$twitter_feed = wp_trim_words( $twitter_feed, 9 );
    return $twitter_feed; 
}
add_filter( 'ctf-tweet-text', 'custom_trim_my_tweet' );

1 Ответ

0 голосов
/ 20 марта 2019

Чтобы обрезать текст с помощью JavaScript:

Сначала вы должны выбрать элемент, используя селектор CSS. Проще всего выбрать элементы, используя идентификатор элемента, например:

var tweet = document.getElementById("my_tweet_id");

Затем вы можете получить текстовое содержимое элемента с помощью element.innerText

var tweetText = tweet.innerText;

Затем вы можете просто сократить длину текста внутри элемента, используя string.substring()

tweet.innerText = tweetText.substring(0, 120);

Честно говоря, я думаю, что вы должны попытаться исправить это на уровне плагина / wordpress / php, а не вырезать текст в JavaScript. Но если это то, что вы хотите сделать, то вышеприведенные методы сработают.

EDIT: В случае, если элементы твита не имеют уникальных идентификаторов, вам нужно будет выбрать все из них, а затем перебрать каждый из них и выполнить вырезку текста. Я дам вам пример того, как это сделать:

Возможно, вам придется проявить немного изобретательности с вашими селекторами CSS, в зависимости от того, как отображаются твиты.

В моем примере я предполагаю, что у вас есть div с идентификатором 'tweets', который содержит пять отдельных div элементов, по одному на каждый твит, которые имеют одинаковый класс 'single-tweet'.

Сначала мы получаем все элементы 'single-tweet':

var tweets = document.querySelectorAll('#tweets .single-tweet');

tweets теперь содержит список узлов из пяти 'single-tweet' делений.

Затем мы перебираем их с помощью .forEach() и выполняем вырезку текста для каждого элемента.

tweets.forEach( (tweet) => {
    tweet.innerText = tweet.innerText.substring(0, 120);
})

Теперь все элементы 'single-tweet' будут содержать то, что осталось после сокращения текста до 120 символов.

...