Embark on a journey of knowledge! Take the quiz and earn valuable credits.
Take A QuizChallenge yourself and boost your learning! Start the quiz now to earn credits.
Take A QuizUnlock your potential! Begin the quiz, answer questions, and accumulate credits along the way.
Take A QuizKindly log in to use this feature. We’ll take you to the login page automatically.
LoginGeneral Tech Bugs & Fixes 3 years ago
User submissions are the sole responsibility of contributors, with TuteeHUB disclaiming liability for accuracy, copyrights, or consequences of use; content is for informational purposes only and not professional advice.
I was hoping for some wordpress-integrated function to get me the needed values in a few lines of code, but with @disinfor's hint I dug a bit into the wordpress database and came to the following results:
wp_posts.post_title is the title of the imagewp_posts.post_excerpt is the caption of the imagewp_posts.post_content is the content of the image's media page (not relevant here)wp_postmeta.meta_value WHERE meta_key='_wp_attachment_image_alt' is the alt-text of the imageCode below:
function img_shortcode($atts) {
global $wpdb;
try {
$conn = new \PDO("mysql:host=" . constant('DB_HOST') . ";dbname=" . constant('DB_NAME'), constant("DB_USER"), constant("DB_PASSWORD"));
// set the PDO error mode to exception
$conn->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$sql = "SELECT post_title, post_excerpt FROM `". $wpdb->prefix . "posts` WHERE ID=". $atts[0];
$stmt = $conn->prepare($sql);
$stmt->execute();
$img = $stmt->fetch(\PDO::FETCH_ASSOC);
$title = $img['post_title'];
$caption = $img['post_excerpt'];
$sql = "SELECT meta_value FROM `". $wpdb->prefix . "postmeta` WHERE (post_id=". $atts[0] ." AND meta_key='_wp_attachment_image_alt')";
$stmt = $conn->prepare($sql);
$stmt->execute();
$alt = $stmt->fetch(\PDO::FETCH_ASSOC)['meta_key'];
}
catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
return NULL;
}
// todo: generate html from $alt, $title and $caption (and optionally further shortcode attributes)
}
add_shortcode('img', 'img_shortcode'); // Signature: [img 126] to render image with media id 126
No matter what stage you're at in your education or career, TuteeHUB will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.
Kindly log in to use this feature. We’ll take you to the login page automatically.
LoginReady to take your education and career to the next level? Register today and join our growing community of learners and professionals.
Your experience on this site will be improved by allowing cookies. Read Cookie Policy
Your experience on this site will be improved by allowing cookies. Read Cookie Policy
manpreet
Best Answer
3 years ago
My problem: How to pull the media data out of the database">database in PHP?
I'd like to write a shortcode that renders an image with the alt-text and caption taken automatically from the media database">database. Usage-example:
Intended Output: