I had been trying to make my WordPress blog Thumnails Clickable without any luck.
Here is the code I am supposed to change:
<a href="<?php the_permalink(); ?>" title="<?php the_title();?>"><?php the_post_thumbnail(); ?></a> I had been trying to make my WordPress blog Thumnails Clickable without any luck.
Here is the code I am supposed to change:
<a href="<?php the_permalink(); ?>" title="<?php the_title();?>"><?php the_post_thumbnail(); ?></a> Short answer: change your theme, not the post content. was on the right track by looking at the theme files; ’s plugin suggestions will let PHP run inside post bodies but are unnecessary here and add security/maintenance overhead. The clean, future-proof approaches are (A) edit the loop template where thumbnails are output (index.php / content template) or (B) add a small filter to functions.php so every featured image is wrapped automatically.
Make sure the theme declares support for featured images (put this in the theme’s functions.php if it’s missing):
/* in functions.php */
add_theme_support('post-thumbnails'); If you prefer not to edit multiple templates, add this filter to functions.php to automatically wrap every featured-image HTML with the post permalink (sanitized):
function wrap_post_thumbnail_with_link( $html, $post_id, $post_image_id ) {
$url = esc_url( get_permalink( $post_id ) );
$title = esc_attr( get_the_title( $post_id ) );
return '<a href="' . $url . '" title="' . $title . '">' . $html . '</a>';
}
add_filter( 'post_thumbnail_html', 'wrap_post_thumbnail_with_link', 10, 3 ); Note: remove any manual anchor in templates before using the filter to avoid double links.
Troubleshooting and best practices: put changes in a child theme so updates don’t overwrite them; ensure the thumbnail code runs inside The Loop (or pass a post ID if outside it); check has_post_thumbnail() before output; if a thumbnail appears but isn’t clickable inspect the HTML (browser DevTools) for overlapping elements or CSS rules (z-index, pointer-events). ’s plugin route is workable but use it only if you truly need PHP inside post content — otherwise prefer template or filter edits for a simpler, safer solution.
Jump to Post— design324095 0The easiest way to have a thumbnail which links to a post is the simple following method:
In any post or page:<a href="http://website.com/linktopost.php"><img src="image.jpg"></a>Don't make things more complicated than they are.
without any more detailed information, it seems to me like you are trying to put this in a post or page. First thing to know is that Wordpress will not process PHP within a post or page; at least, not without some modification. Fortunately some people have made plugins which will allow PHP within a wordpress page; here are two plugins:
METHOD 1: PHP INCLUDE
With this method, you use a server side include (SSI) in order to use PHP within a Wordpress post or page. This is by far the best method.
STEPS:
1. Download Wordpress plugin.
2. open the administration panel of Wordpress, go to "Plugins", and upload the .zip file for PHP Include that you just downloaded.
3. activate the plugin.
4. create your file that includes your PHP code, which may include HTML as well.
5. configure PHP Include in your Administration Panel in the Wordpress "Settings" tab on the left-hand column.
6. where you want to include your SSI, place the code <?php include("your-file.php"); ?> (where "your-file.php" is your file).
Congratulations! You're done.
_____________________________________________________________________________________
METHOD 2: PHP EXEC Plugin
With this method, you can place PHP code directly in your Wordpress post or page.
STEPS:
1. create a text file on your PC named "phpexec.txt".
2. copy the code for phpexec.php (below) into the file phpexec.txt that you just created, and save it.
3. rename the file from "phpexec.txt" to "phpexec.php".
4. using a program like WinRAR or 7-Zip, create a .zip file of phpexec.php.
5. open the administration panel of Wordpress, go to "Plugins", and upload phpexec.zip
6. activate the plugin PHPexec.
7. Now place your PHP code inside the tags, <phpcode></phpcode> .
Your PHP code should now work in your Wordpress page or post!
---------------------------------
Code for phpexec.php:
<?php
/*
Plugin Name: PHP Exec
Plugin URI: http://priyadi.net/archives/2005/03/02/wordpress-php-exec-plugin/
Description: Execute PHP Code inside a post. Do NOT use this plugin if you don't trust your WP users.
Version: 1.7
Author: Priyadi Iman Nurcahyo
Author URI: http://priyadi.net/
Inspired by runphp plugin by Mark Somerville
*/
### mask code before going to the nasty balanceTags ###
function php_exec_pre($text) {
$textarr = preg_split("/(<phpcode>.*<\\/phpcode>)/Us", $text, -1, PREG_SPLIT_DELIM_CAPTURE); // capture the tags as well as in between
$stop = count($textarr);// loop stuff
for ($phpexec_i = 0; $phpexec_i < $stop; $phpexec_i++) {
$content = $textarr[$phpexec_i];
if (preg_match("/^<phpcode>(.*)<\\/phpcode>/Us", $content, $code)) { // If it's a phpcode
$content = '[phpcode]' . base64_encode($code[1]) . '[/phpcode]';
}
$output .= $content;
}
return $output;
}
### unmask code after balanceTags ###
function php_exec_post($text) {
$textarr = preg_split("/(\\[phpcode\\].*\\[\\/phpcode\\])/Us", $text, -1, PREG_SPLIT_DELIM_CAPTURE); // capture the tags as well as in between
$stop = count($textarr);// loop stuff
for ($phpexec_i = 0; $phpexec_i < $stop; $phpexec_i++) {
$content = $textarr[$phpexec_i];
if (preg_match("/^\\[phpcode\\](.*)\\[\\/phpcode\\]/Us", $content, $code)) { // If it's a phpcode
$content = '<phpcode>' . base64_decode($code[1]) . '</phpcode>';
}
$output .= $content;
}
return $output;
}
### main routine ###
function php_exec_process($phpexec_text) {
$phpexec_userdata = get_userdatabylogin(the_author('login',false));
if($phpexec_userdata->user_level >= php_exec_getuserlevel()){
$phpexec_doeval = true;
}
$phpexec_textarr = preg_split("/(<phpcode>.*<\\/phpcode>)/Us", $phpexec_text, -1, PREG_SPLIT_DELIM_CAPTURE); // capture the tags as well as in between
$phpexec_stop = count($phpexec_textarr);// loop stuff
for ($phpexec_i = 0; $phpexec_i < $phpexec_stop; $phpexec_i++) {
$phpexec_content = $phpexec_textarr[$phpexec_i];
if (preg_match("/^<phpcode>(.*)<\\/phpcode>/Us", $phpexec_content, $phpexec_code)) { // If it's a phpcode
$phpexec_php = $phpexec_code[1];
if ($phpexec_doeval) {
ob_start();
eval("?>". $phpexec_php . "<?php ");
$phpexec_output .= ob_get_clean();
} else {
$phpexec_output .= htmlspecialchars($phpexec_php);
}
} else {
$phpexec_output .= $phpexec_content;
}
}
return $phpexec_output;
}
function php_exec_options() {
if($_POST['php_exec_save']){
update_option('php_exec_userlevel',$_POST['php_exec_userlevel']);
echo '<div class="updated"><p>User level saved successfully.</p></div>';
}
?>
<div class="wrap">
<h2>PHPExec Options</h2>
<form method="post" id="php_exec_options">
<fieldset class="options">
<legend>Minimum User Level</legend>
<table width="100%" cellspacing="2" cellpadding="5" class="editform">
<tr valign="top">
<th width="33%" scope="row">User Level:</th>
<td><input name="php_exec_userlevel" type="text" id="php_exec_userlevel" value="<?php echo get_option('php_exec_userlevel') ;?>" size="2" maxlength="1" />
<br />Sets the minimum level to allow users to run PHP code in posts. If option is not set, then defaults to 9.</td>
</tr>
</table>
<p class="submit"><input type="submit" name="php_exec_save" value="Save" /></p>
</fieldset>
</form>
</div>
<?php
}
function php_exec_adminmenu(){
add_options_page('PHPExec Options', 'PHPExec', 9, 'phpexec.php', 'php_exec_options');
}
function php_exec_getuserlevel(){
if($level = get_option('php_exec_userlevel')){
return $level;
} else {
return 9;
}
}
add_action('admin_menu','php_exec_adminmenu',1);
add_filter('content_save_pre', 'php_exec_pre', 29);
add_filter('content_save_pre', 'php_exec_post', 71);
add_filter('the_content', 'php_exec_process', 2);
add_filter('excerpt_save_pre', 'php_exec_pre', 29);
add_filter('excerpt_save_pre', 'php_exec_post', 71);
add_filter('the_excerpt', 'php_exec_process', 2); What I am trying to accomplish is this: .
From what I know, I need to work with this on index.php:
<?php if ( function_exists("has_post_thumbnail") && has_post_thumbnail() )
{
the_post_thumbnail(array(260,200), array("class" => "alignleft post_thumbnail"));
}
?> The easiest way to have a thumbnail which links to a post is the simple following method:
In any post or page:
<a href="http://website.com/linktopost.php"><img src="image.jpg"></a> Don't make things more complicated than they are.
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.