Meta description via echo in header
Ben al een flinke tijd bezig met het maken van een formulier zodat ik via backend de meta-description in frontend (header) van mijn site kan plaatsen.
Ik wil de meta description via een echo in header laden.
Dit is mijn invoerveld in backend:
En dit wordt de functie om ingevoerde data in header aan te roepen (die ik dus niet werkend krijg):
Wie kan me helpen?
Guido
Gewijzigd op 18/03/2014 23:46:21 door Guido -
Laat je hele code is zien van je <form>
Code (php)
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
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
<?php
session_start(); // Voor het voorbeeld slaan we het even op in een sessie. Hiervoor zou je zelf een database moeten gebruiken
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$_SESSION['meta-setting'] = (isset($_POST['meta-setting']) ? htmlentities($_POST['meta-setting']) : '');
echo 'Meta-setting opgeslagen';
}
?>
<html>
<head>
<meta name="description" content="<?php echo (isset($_SESSION['meta-setting']) ? $_SESSION['meta-setting'] : ''); ?>" />
<title></title>
</head>
<body>
<form method="POST">
<label>Meta setting</label>
<?php
if(isset($_POST['meta-setting'])) {
$setting = htmlentities($_POST['meta-setting']);
} else if(isset($_SESSION['meta-setting'])) {
$setting = htmlentities($_SESSION['meta-setting']);
}
?>
<input type="text" name="meta-setting" value="<?php echo (isset($setting) ? $setting : ''); ?>" />
<button>Save setting</button>
</form>
</body>
</html>
session_start(); // Voor het voorbeeld slaan we het even op in een sessie. Hiervoor zou je zelf een database moeten gebruiken
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$_SESSION['meta-setting'] = (isset($_POST['meta-setting']) ? htmlentities($_POST['meta-setting']) : '');
echo 'Meta-setting opgeslagen';
}
?>
<html>
<head>
<meta name="description" content="<?php echo (isset($_SESSION['meta-setting']) ? $_SESSION['meta-setting'] : ''); ?>" />
<title></title>
</head>
<body>
<form method="POST">
<label>Meta setting</label>
<?php
if(isset($_POST['meta-setting'])) {
$setting = htmlentities($_POST['meta-setting']);
} else if(isset($_SESSION['meta-setting'])) {
$setting = htmlentities($_SESSION['meta-setting']);
}
?>
<input type="text" name="meta-setting" value="<?php echo (isset($setting) ? $setting : ''); ?>" />
<button>Save setting</button>
</form>
</body>
</html>
edit:typo
Gewijzigd op 19/03/2014 08:33:10 door Michael -
Ik heb je code uitgeprobeert en bij mij werkt het gewoon. Als ik Hoi intyp en ik klik op de knop dan zie ik hem in het tekstvak zitten. Als ik dan de broncode bekijk zie ik hem ook in de meta tag van de header zitten.
Michael: Dat is mijn voorbeeld voor Guido als antwoord ;) Die werkt inderdaad. Guido is de topicstarter, niet ik :)
Ohh joh, zag ik niet eens XD
Het is bestemd voor een WordPress site (plugin), dus de setting wordt in mysql database opgeslagen.
Ik wil niet aan broncode van theme/template/header komen, vandaar dat ik de echo functie gebruik om de metadescription in de head vd site te laden.
Gebruik deze tutorial (tot en met kopje 'Bringing it all Together'):
http://kovshenin.com/2012/the-wordpress-settings-api/
Mvg, Guido
Toevoeging op 19/03/2014 14:51:46:
Toch nog even een aanvullende vraag, omdat ingevoerde data in database wordt weggeschreven, valt bij mij de code van regel 1-8 sowieso af.
Dan komt de variabele $_session nog meerdere keren voor, kan ik dat gewoon weghalen uit de code (regel 11, 22, 23), of is dat te makkelijk gedacht?
Ben helaas geen programmeur, heb slechts basis kennis... ;-)
Guido
Je kunt niet zomaar session weghalen. Je moet dit namelijk vervangen door de variabele die uit de database komt. Omdat ik niet weet hoe groot je kennis is heb k geprobeerd het zo goed mogelijk uit te leggen in het volgende script. Ik hoor graag of je er wat mee kunt en of het zo duidelijk is.
Code (php)
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
87
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
87
<?php
/**
* Verbinding maken
*/
$mysqli = new mysqli('host','user','password','database');
if($_SERVER['REQUEST_METHOD'] == 'POST') {
if(isset($_POST['meta-setting'])) {
/**
* De geposte variabele opslaan in de database
*/
$sql = "INSERT INTO tabel SET metasetting = '" . $mysqli->real_escape_string($_POST['meta-setting']);
$res = $mysqli->query($sql);
/**
* Controleren of het opslaan is gelukt
*/
if($res) {
/**
* Controleren of er daadwerkelijk iets is opgeslagen
*/
if($mysqli->affected_rows > 0) {
/**
* Opgeslagen
*/
echo 'Meta-setting opgeslagen';
} else {
/**
* Niets opgeslagen
*/
echo 'Er is niet opgeslagen';
}
} else {
/**
* Opslaan is mislukt
*/
echo 'Er is een fout opgetreden';
/*
* Tonen wat er fout is gegaan
* Deze foutmelding is alleen voor jezelf, niet wanneer je je script online gebruikt
*/
echo $sql . '<br /> ' . $mysqli->error;
}
}
}
/**
* De metasetting ophalen uit de database
* WHERE page omdat je moet controleren van welke pagina je de meta data wilt? Of is dit voor elke pagina hetzelfde?
*/
$sql = "SELECT metasetting FROM tabel WHERE page = '" . $mysqli->real_escape_string($_SERVER['SCRIPT_NAME']) . "'";
$res = $mysqli->query($sql);
/**
* Controleren of het ophalen is gelukt en of er daadwerkelijk iets is gevonden
*/
if($res && $res->num_rows > 0) {
/*
* Ophalen en in de variabele $metasetting zetten
*/
$row = $res->fetch_assoc();
$metasetting = $row['metasetting'];
}
?>
<html>
<head>
<meta name="description" content="<?php /* Als de variabele $metasetting is aangemaakt, deze weergeven */ echo (isset($metasetting) ? $metasetting : ''); ?>" />
<title></title>
</head>
<body>
<form method="POST">
<label>Meta setting</label>
<?php
if(isset($_POST['meta-setting'])) {
$setting = htmlentities($_POST['meta-setting']);
} else if(isset($metasetting)) {
$setting = htmlentities($metasetting);
}
?>
<input type="text" name="meta-setting" value="<?php echo (isset($setting) ? $setting : ''); ?>" />
<button>Save setting</button>
</form>
</body>
</html>
/**
* Verbinding maken
*/
$mysqli = new mysqli('host','user','password','database');
if($_SERVER['REQUEST_METHOD'] == 'POST') {
if(isset($_POST['meta-setting'])) {
/**
* De geposte variabele opslaan in de database
*/
$sql = "INSERT INTO tabel SET metasetting = '" . $mysqli->real_escape_string($_POST['meta-setting']);
$res = $mysqli->query($sql);
/**
* Controleren of het opslaan is gelukt
*/
if($res) {
/**
* Controleren of er daadwerkelijk iets is opgeslagen
*/
if($mysqli->affected_rows > 0) {
/**
* Opgeslagen
*/
echo 'Meta-setting opgeslagen';
} else {
/**
* Niets opgeslagen
*/
echo 'Er is niet opgeslagen';
}
} else {
/**
* Opslaan is mislukt
*/
echo 'Er is een fout opgetreden';
/*
* Tonen wat er fout is gegaan
* Deze foutmelding is alleen voor jezelf, niet wanneer je je script online gebruikt
*/
echo $sql . '<br /> ' . $mysqli->error;
}
}
}
/**
* De metasetting ophalen uit de database
* WHERE page omdat je moet controleren van welke pagina je de meta data wilt? Of is dit voor elke pagina hetzelfde?
*/
$sql = "SELECT metasetting FROM tabel WHERE page = '" . $mysqli->real_escape_string($_SERVER['SCRIPT_NAME']) . "'";
$res = $mysqli->query($sql);
/**
* Controleren of het ophalen is gelukt en of er daadwerkelijk iets is gevonden
*/
if($res && $res->num_rows > 0) {
/*
* Ophalen en in de variabele $metasetting zetten
*/
$row = $res->fetch_assoc();
$metasetting = $row['metasetting'];
}
?>
<html>
<head>
<meta name="description" content="<?php /* Als de variabele $metasetting is aangemaakt, deze weergeven */ echo (isset($metasetting) ? $metasetting : ''); ?>" />
<title></title>
</head>
<body>
<form method="POST">
<label>Meta setting</label>
<?php
if(isset($_POST['meta-setting'])) {
$setting = htmlentities($_POST['meta-setting']);
} else if(isset($metasetting)) {
$setting = htmlentities($metasetting);
}
?>
<input type="text" name="meta-setting" value="<?php echo (isset($setting) ? $setting : ''); ?>" />
<button>Save setting</button>
</form>
</body>
</html>
Ik ga vanavond proberem om mijn code aan te vullen met de jouwe (gelukkig heeft WordPress veel functies ingebouwd die ik eenvoudig kan aanroepen middels shortcode, het ging mij vooral om data uit invoerveld aan te roepen via echo functie).
Nogmaals hartelijk dank voor je uitgebreide reactie :-)
Guido
Hopelijk lukt het hiermee en anders horen we het wel weer. Succes!
Uiteindelijk bleek het vrij eenvoudig te zijn, dankzij de opbouw van WordPress:
https://wordpress.org/plugins/very-simple-meta-description/
Guido
Mooi dat het is gelukt en bedankt voor het delen van je oplossing.