Mala pomoć WP,PHP - modifikacija plugina

Koristim ovaj plugin za prikazivanje samo prvog paragrafa na početnoj WP stranici:

Plugin radi, samo ja bih trebao da mi pokazuje prva dva ili tri paragrafa istom logikom.

function es_front_page_first_paragraph( $content ) {
if ( ! is_home() )
return $content;
$regex = '/<p>(.*?)<\/p>/';
preg_match( $regex, $content, $match );
if ( ! $match )
return $content;
return $match[0];
}
// Run this after wpautop()
add_filter( 'the_content', 'es_front_page_first_paragraph', 20 ); 

Hvala!

pa imaš u WP-u “Unesi oznaku Pročitaj više”. Kak je na en. ne znam jer imam lokaliziran WP.

Nisi shvatio.
Ja hoću prikazati određene paragrafe posta samo na naslovnoj.

Ovo je prvi paragraf bla bla bla.
Ovo je drugi paragraf bla bla bla.
Ovo je treći paragraf bla bla bla.
===Ovdje ubaciš Pročitaj više ===
Ovo je četvrti paragraf bla bla bla.
Ovo je peti parafraf bla bla bla.

I onda se samo prikazuje do teksta Pročitaj više. Ili si nekaj drugi mislio. Ja sam doduše tako radio kada sam htio prikazati samo dio teksta na prvoj stranici da se ne prikazuje cijeli članak.

Probaj ovo 20 povecati ako vec nisi, cini mi se da bi to mogao biti beoj slova koji se prikazuju

To sam prvo probao, nije to.
Ovdje treba nešto promijeniti samo ja ne znam što.

$regex = '/<p>(.*?)<\/p>/';

možda da probaš sa ovim < p > < / p > to je oznaka za paragraf

http://www.w3schools.com/tags/tag_p.asp

Probao sam i to. Ne radi.
Ovo je trivijalno za nekog PHP-ovca a znam da ih ima na ovom forumu.
Valjda će se netko javiti…

Mislim da je ovo vise do RegEx code snippeta.

Ne kužim.
Uglavnom taj plugin radi ono šta meni treba, pokazuje samo prvi paragraf posta.
Samo što meni treba da pokaže prva 2 ili 3 paragrafa.

Ziher sam da umjesto

$regex = '/<p>(.*?)<\/p>/';

treba upisati nešto drugo da proradi.

Probao sam ponoviti funkciju - ali ne ide.
Moje znanje wp/php nije baš nešto.

Napamet, reka bi da trebas preg_match_all, i onda provjeri $match array - mislin da bi ti unutra triba bit svaki paragraf. Onda tu di vracas $match[0] zapravo vratis konktatenaciju $match[1].$match[2] itd, i eventualno uvalis između "<p>" tagove ako zelis zadrzat formatiranje, jer ce regex matchat samo ono unutar tagova. Ako me sjecanje sluzi dobro.
Sami regex izgleda ok.

Thx, probati ću na taj način.

Neće i neće kvragu, sve sam probao.
A znam da je u pitanju jedna linija koda, niti toliko :frowning:

Evo ti primjer:

function horz_posts_index_content_length_restrict( $content ) {

	// Number of paragraphs to (try to) return
	$paragraphs_count = 3;

	if ( ! is_home() ) {

		return $content;

	}

	$regex = '/<p>(.*?)<\/p>/';

	preg_match_all( $regex, $content, $matches );

	if ( empty( $matches ) ) {

		return $content;

	}
	
	$result = '';

	for ( $i = 0;  $i < $paragraphs_count;  $i++ ) {
		
		if ( isset( $matches[0][ $i ] ) ) {

			$result .= $matches[0][ $i ];

		}

	}

	return $result;

}

add_filter( 'the_content', 'horz_posts_index_content_length_restrict', 11 );

Mozes mijenjati vrijednost varijable $paragraphs_count da promijenis koliko se paragrafa vraca funkcijom.

1 Like

Hvala!
Probati ću ovo pa javim.

@apazinjan
Sada radi baš kako sam zamislio.
Hvala još jednom!