Add HTML block to wordpress post


Már többen is kérdezték tőlem, hogy a lapon a bejegyzésekben található adsense hirdetéseket milyen módon teszem ki, illetve milyen plugint használok ehhez. Eddig nem igazán volt publikus a plugin, mivel nem egy bárhonnan letölthető kiegészítésről volt, ám a szerzője – TLoF – hozzájárult a publikálásához. Szóval jöjjön most a plugin és a leírás, hogy hogy működik.

Mit csinál a plugin?

A plugin lényegében annyit tesz, hogy egy előre definiált HTML blokkot bizonyos szabályok szerint beszúr a wordpress bejegyzés szövegébe. A beszúrt HTML blokk megjelenési helye illetve a megjelenés száma attól függ, hogy az adott bejegyzés mennyi bekezdésből áll. Ha hosszabb a cikk, több reklám kerül bele, ha rövidebb, akkor természetesen kevesebb.

Beállítások: megjelenő HTML blokkok száma

A lentebbi forráskódban látható, hogy ha 0-4 közötti a bejegyzésben található bekezdések száma, akkor nem ad be hirdetést a plugin. Ha a szám 5-9 között van, akkor 1 hirdetés fog megjelenni. Ha 10 vagy több bekezdést tartalmaz a bejegyzés, akkor pedig 2 hirdetést fog beszúrni a plugin.

A megjelenő HTML blokkok (pl. adsense hirdetések) mindig arányosan oszlanak el a lapon, pl. ha 1 HTML blokk kerül csak beszúrásra, akkor az a cikk közepén fog megjelenni, ha pedig 2 HTML blokkról van szó, akkor harmadolja a plugin a cikket.

Ezeket a számokat természetesen módosíthatod te is, az alábbi sorokban kell átírni az értékeket:

1
if ($paragraph_number <= 4)
1
if ($paragraph_number <= 9)
1
if ($paragraph_number > 9)

Beállítások: megjelenések száma

A pluginben az is beállítható, hogy egy látogató számára összesen hányszor jelenhet meg az adott HTML blokk. Alapértelmezetten egy 8-ra van állítva és az alábbi sorban lehet módosítani az értékeket:

1
function postaddtext($text, $more_link_text, $maxadvert = '8')

Az alapértelmezett 8 megjelenés az adott napra szól, tehát ha valaki pl. kedd délután kezdi el böngészni a napot, akkor kedd éjfélig láthatja max 8-szor, de éjfél után új nap kezdődik, amikor megint 8-szor jelenik meg számára a HTML blokk.

A plugin telepítése

A plugin telepítése nagyon egyszerű, 4 lépésből áll.

1.) A fenti kódot tedd be egy fájlba pl. postaddtext.php néven, majd másold be a plugin könyvtárba (www.blogodcime.hu/wp-content/plugins/postaddtext.php)

2.) Aktiváld a plugint a wordpress adminisztrációs felületén

3.) illeszd be a kódját a single.php nevű template fájlodba, ami a bejegyzések megjelenítéséért felel.

Én a lap készítésekor a template-hez a sandbox nevű theme-t használtam kiindulási pontként, annak single.php fájljában volt eredetileg ez a kódrészlet:

1
2
3
4
<div class="entry-content">
	<?php the_content(''.__('Read More <span class="meta-nav">&raquo;</span>', 'sandbox').''); ?>
	<?php wp_link_pages("\t\t\t\t\t<div class='page-link'>".__('Pages: ', 'sandbox'), "</div>\n", 'number'); ?>
</div>

Ezt kellett úgy módosítani, hogy a the_content -t felváltotta a postaddtext és a hozzá kapcsolódó HTML blokk.

A fenti kódrészlet a módosítás után, de még a megjelenítendő HTML blokk nélkül:

1
2
3
4
<div class="entry-content">
	<?php postaddtext('', ''.__('Read More <span class="meta-nav">&raquo;</span>', 'sandbox').'', 8); ?>
	<?php wp_link_pages("\t\t\t\t\t<div class='page-link'>".__('Pages: ', 'sandbox'), "</div>\n", 'number'); ?>
</div>

Ide kell majd beszúrni a megjelenítendő HTML blokkot:

1
2
3
4
<div class="entry-content">
	<?php postaddtext('IDE-SZURD-BE-A-HTML-BLOKKOT', ''.__('Read More <span class="meta-nav">&raquo;</span>', 'sandbox').'', 8); ?>
	<?php wp_link_pages("\t\t\t\t\t<div class='page-link'>".__('Pages: ', 'sandbox'), "</div>\n", 'number'); ?>
</div>

4.) A gyökérkönyvtárban lévő index.php-be be kell másolni egy kódrészletet, ami lerakja a cookie-t a felhasználó számítógépére (enélkül nem tudja számolni a megjelenített HTML blokkok számát).

1
2
3
4
5
6
7
8
9
10
11
$today = date('Y_m_d');
if (isset($_COOKIE['wp_postaddtext_' . $today]))
{
 $num = $_COOKIE['wp_postaddtext_' . $today] + 1;
}
else
{
 $num = 1;
}
setcookie('wp_postaddtext_'. $today, $num, time() + 86400, '/', '.tutorial.hu');
$_COOKIE['wp_postaddtext_' . $today] = $num;

Arra érdemes figyelni, hogy a beillesztendő kódrészlet még az include-olt header előttre kerüljön, tehát egy 2.7.1-es WP-ben így néz ki az index.php fájl tartalma:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */
 
/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
define('WP_USE_THEMES', true);
 
$today = date('Y_m_d');
if (isset($_COOKIE['wp_postaddtext_' . $today]))
{
 $num = $_COOKIE['wp_postaddtext_' . $today] + 1;
}
else
{
 $num = 1;
}
setcookie('wp_postaddtext_'. $today, $num, time() + 86400, '/', '.tutorial.hu');
$_COOKIE['wp_postaddtext_' . $today] = $num;
 
/** Loads the WordPress Environment and Template */
require('./wp-blog-header.php');
?>

A plugin forráskódja:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?
/*
Plugin Name: Add HTML block to Wordpress post
Plugin URI: http://tlof.hu
Description: Szabadon választott HTML szöveget rak be a postba. 0-4  p  között egyet sem 5-9 között egyet 9 fölött kettőt. Ha több mint maxadvert hirdetést látott már nem kap többet
Author: TLoF
Author URI: http://tutorial.hu/tlof
Version: 1.0
*/
function postaddtext($text, $more_link_text, $maxadvert = '8')
{
	$content = get_the_content($more_link_text, $stripteaser, $more_file);
	$content = apply_filters('the_content', $content);
	$postcontent = str_replace(']]>', ']]&gt;', $content);
 
	$today = date('Y_m_d');
 
	if (isset($_COOKIE['wp_postaddtext_' . $today]))
	{
		$num = $_COOKIE['wp_postaddtext_' . $today];
	}
	else
	{
		$num = 0;
	}
 
	if ($num < $maxadvert)
	{
		$post_array = explode('<p>', $postcontent);
		$paragraph_number = count($post_array);
		if ($paragraph_number <= 4)
		{
			echo $postcontent;
			return true;
		}
 
		if ($paragraph_number <= 9)
		{
			$where = intval($paragraph_number / 2);
			$runner = 0;
			$newcontent = '';
			foreach ($post_array as $paragraph)
			{
				if ($where == $runner)
				{
					$newcontent .= $text . "\n";
 
				}
				$newcontent .= '<p>' . $paragraph;
				$runner++;
			}
 
			echo $newcontent;
			return true;
		}
 
		if ($paragraph_number > 9)
		{
			$where = intval($paragraph_number / 3);
			$where2 = 2 * $where;
			$runner = 0;
			$newcontent = '';
			foreach ($post_array as $paragraph)
			{
				if ($where == $runner or $where2 == $runner)
				{
					$newcontent .= $text . "\n";
				}
				$newcontent .= '<p>' . $paragraph;
				$runner++;
			}
 
			echo $newcontent;
			return true;
		}
 
	}
	else
	{
		echo $postcontent;
		return true;
	}
 
}
 
?>

Remélem, hogy a leírás alapján mindenkinek sikerül beizzítania a plugint és szeretném megköszönni TLoF-nak, hogy hozzájárult a plugin közzétételéhez.

Letöltési link és kiegészítő információk a pluginhez

Letöltés: postaddtext-wordpress-plugin.zip
A plugint írta: TLoF (http://tlof.hu)

Kapcsolódó bejegyzések:

A cikket beküldte: Harder (http://blog.harder.hu)

7 hozzászólás

  1. moshu says:

    Nem látok letöltés linket… Sajnos, amikor innen kijelölöd másolásra, mindenki ki fogja másolni a sorok sorszámát is. Én látom, hogy az egy másik td-ben van, tehát sorszámok nélkül is kijelölhető, másolható, de tudod, milyen a júzer…

  2. Harder says:

    Hát ha a kód elejétől kezded kijelölni és nem az első számjegytől, akkor csak a kódot fogja vágólapra tenni, de igazad van, mindjárt beteszem egy letölthető fájlnak is, hátha valaki emiatt nem tudja majd használni. :) Köszi hogy szóltál.
    Szerk.: ott van a cikk végén a letöltési link. :)

  3. Panky says:

    A dezinerfolio-s srácok úgy oldották meg, hogy egyszerűen berakták a google kódot a “more” után :D De amúgy nem rossz.

  4. Harder says:

    Panky, az a legegyszerűbb és szvsz legrosszabb megoldás, mert ha bármit módosítani akarsz, akkor szerkeszthetsz át pl. 1000 cikket.
    Annál már egyszerűbb az is, hogy ha valamelyik adsense plugint használod és mégegyszerűbb, ha ezt a kódot. :)

  5. DjZoNe says:

    Éppen tegnap kezdtem el azon agyalni, hogy hogyan is csináljak adsenset az oldalamra.
    Kiiundlásnak ez jó lesz :)

  6. Harder says:

    Akkor hajrá, szólj ha megvan, megnézem :)

  7. Tupacko says:

    Tetszetős kiegészítő, azt hiszem az új oldalon ki is fogom próbálni (csak időm legyen :D).
    Köszönöm TLoF, köszönöm Harder!

Szólj hozzá
a Add HTML block to wordpress post c. bejegyzéshez

- Engedélyezett HTML elemek: <a> <em> <strong> <ul> <ol> <li>
- Forráskód beküldéséhez tedd a kódot ezek közé: <pre lang="php" line="1">Kódrészlet helye itt</pre>