Remove images from content in wordpress gallery template - wordpress

I want to add a gallery template to a child theme and am finding it frustratingly difficult to find good examples. The best example I've found to date is by Andres Hermosilla, but was made way back in 2012.
Steps 1 to 3 will get me half of what I want, which is a gallery inserted above the site title (I don't need fluxslider or similar at this stage.) The following is the code I'm using, placed just before the_title():
<?php
$image_args = array(
'numberposts' => -1, // Using -1 loads all posts
'orderby' => 'menu_order', // This ensures images are in the order set in the page media manager
'order'=> 'ASC',
'post_mime_type' => 'image', // Make sure it doesn't pull other resources, like videos
'post_parent' => $post->ID, // Important part - ensures the associated images are loaded
'post_status' => null,
'post_type' => 'attachment'
);
$images = get_children( $image_args );
if ( $images ) {
foreach ( $images as $image ) { ?>
<img src="<?php echo $image->guid; ?>" alt="<?php echo $image->post_title; ?>" title="<?php echo $image->post_title; ?>" />
<?php }
} ?>
My issue is that the images themselves remain displayed in the content of the post - how can I strip all of the images from the page content at the same time?

Why not add a class to the gallery template page and display none all the images except for gallery ones using css.

Related

Display attached images only for current post in wordpress

I want to display my post text and images separately, like in two different columns.
I followed dew tricks found online. Unfortunatly, they work but not the way I want them to. It's displaying all the images present in media instead of the images which I inserted in the current post. I found the following snippet in almost every solution related to this topic.
Code:
<?php
$args = array( 'post_type' => 'attachment', 'post_status' => 'any', 'post_parent' => $post->ID );
$attachments = get_post($args);
if ($attachments) {
foreach ( $attachments as $attachment ) {
echo '<div class="col-md-4 col-sm-4 col-xs-6">';
the_attachment_link( $attachment->ID , flase );
echo '</div>';
}
}
wp_reset_postdata();
?>
Try the following:
$images = get_attached_media('image');
You can then use your existing foreach loop

wordpress get_children doesn't reflect edits to image galleries

I have a very simple theme that retrieves all image gallery links for each post using the get_children() function.
Unfortunately, there's some strange bugs - first, if images are not uploaded when creating the post and are instead selected from the media library, they don't show up after publishing. Also, if I do any edit after a post has been created, be it reordering the images, adding new ones, deleting images, even deleting the whole gallery and creating a new one, they don't show up either. Refreshing browser cache doesn't do a thing.
If i change to one of the base themes, the images show up, and the right links are there when querying the db directly.
I reproduced the basic problematic code in a one file micro-theme, but the issue still happens:
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<h1><?php the_title(); ?></h1>
<?php echo $post->id;
$args = array(
'numberposts' => -1,
'order_by' => 'menu_order',
'order' => 'ASC',
'post_mime_type' => 'image',
'post_parent' => $post->ID,
'post_status' => inherit,
'post_type' => 'attachment'
);
$images = get_children($args);
if ( empty($images)){
echo "nothing";
}
foreach ( $images as $id => $image ) :
echo $image->post_title;
endforeach;
?>
<?php endwhile; ?>
<?php endif; ?>
I'm stumped, I've tried using different functions to retrieve the posts with the same result, deactivated all plugins, nothing.
I'm testing both on OSX mavericks and an Ubuntu vps, could it be some database cache thing i'm supposed to flush somewhere?
When you set 'post_parent' => $post->ID, you will only get attachments to that page. That's part of the reason not all of the images show up.
But the bigger problem is that galleries are handled differently than posts/pages/attachments. Galleries only exist in the shortcode- they're not stored in the db- so you can't query them with get_posts or get_children.
To customize the way galleries are rendered you'll have to either hook into the wordpress code that creates the gallery, or deregister that function and write your own.
This question answers how to manipulate shortcode if you were writing a plug-in- but the process will be the same from a theme.
:-)

How to fetch all images from particular page id in wordpress

I have created a page called "Gallery" and created new gallery with 10 images. My page id is 129. I have 10 images in that page id(129).
Now my question is, i need a code to fetch those 10 images in wordpress. please anyone help me with a code. Thanks in advance.
Get all images from post.
function get_all_images() {
global $post, $posts;
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
$first_img = $matches [1] [0];
return $first_img;
}
Here you get frist image such like you get all other images
Use get_children
I used this code to extract all the images from a page gallery in the chosen order. you can include this code in the loop or use it stand alone. just choose the appropriate post_parent code (see bellow the code example).
This example show all images associated to the page id 129, have a look:
$images = get_children( array( 'post_parent' => 129, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order', 'order' => 'ASC', 'numberposts' => 999 ) );
$images is now a object that contains all images (related to post id 1) and their information ordered like the gallery interface.
if ( $images ) {
//looping through the images
foreach ( $images as $attachment_id => $attachment ) {
?>
<?php /* Outputs the image like this: <img src="" alt="" title="" width="" height="" /> */ ?>
<?php echo wp_get_attachment_image( $attachment_id, 'full' ); ?>
This is the Caption:<br/>
<?php echo $attachment->post_excerpt; ?>
This is the Description:<br/>
<?php echo $attachment->post_content; ?>
<?php
}
}
Find the post id you wan to extract images from and insert it into this argument: 'post_parent' => 129
you can also use:
'post_parent' => $post->ID
If you want to use get_children in a loop, and get the post id from the returned post id.
If you want to exclude the image selected as a featured image i would have a if statement check if the image URL is equal to the featured image URL.

Display the content and title of a specific page on Homepage

I want the title and content of a specific page to show in my Homepage and footer area.
It will be something like this.
This is the Title of the page
This is the content of the page, etc....blahh blah..
readmore...
I know that there is no excerpt in the page post. But i want to limit the characters of the content that will show in the footer area.
Can you give me a code/link/tutorial that will show me how to do this?
Thanks,
First there is excerpt avaIlable in the page posts. Just set it in the Screen Options.
About the code try this one which I use on my projects.
It will show excerpt of those pages, which have custom field named showOnHomePage and the value of this field determines the order in the list.
$pages=get_posts( array( 'meta_key' => 'showOnHomePage', 'post_type' => 'page', 'orderby' => 'meta_value', 'order' => 'ASC'));
foreach( $pages as $page )
{
echo '<h2 class="entry-title"><a href="'.get_permalink( $page->ID ).'" >'.get_the_title( $page->ID ).'</a></h2>';
echo $page->post_excerpt;
echo '<a class="read-more" href="'. get_permalink( $page->ID ) . '">Read More</a>';
}

How do i show wordpress attachments from current post?

So with my blog i have a photo attachment page but it only shows to photo's at a time, and those two photo's are used as the navigation and i hate that.
I want the attachment page to show all the photo's that goes along with the rest of that set.
Here is the current code
<div id="nav-images" class="navigation clearfix">
<div class="nav-next"><?php next_image_link() ?></div>
<div class="nav-previous"><?php previous_image_link() ?></div>
How do i change that to show all the post attachments?
To clarify, this doesn't work anymore - at least with version 3.5.2. I used this instead;
$attachments = get_children(
array(
'post_type' => 'attachment',
'post_parent' => get_the_ID()
)
);
foreach ($attachments as $attachment) {
// ...
}
Only resurrecting an old thread because this one ranks quite highly for this search term.
When you're on a page or post, you can get all of its attachments with the following:
global $post; // refers to the post or parent being displayed
$attachements = query_posts(
array(
'post_type' => 'attachment', // only get "attachment" type posts
'post_parent' => $post->ID, // only get attachments for current post/page
'posts_per_page' => -1 // get all attachments
)
);
foreach($attachements as $attachment){
// Do something exceedingly fancy
}
Since you're currently on an attachment page, you can get all the other attachments using the $post->post_parent value:
global $post; // refers to the attachement object
$attachements = query_posts(
array (
'post_type' => 'attachment', // only get "attachment" type posts
'post_parent' => $post->post_parent, // attachments on the same page or post
'posts_per_page' => -1 // get all attachments
)
);
To then display the attachment images, you can use the wp_get_attachment_image_src function. The attachment's ID will be available in each iteration of your foreach loop as $attachement->ID (if you use the same naming convention as my first example).
Since WordPress 3.6.0 you can also use get_attached_media.
$media = get_attached_media( 'image', $post->ID );
if(! empty($media)){
foreach($media as $media_id => $media_file){
$thumbnail = wp_get_attachment_image_src ( $media_id, 'thumbnail' );
$full = wp_get_attachment_url( $media_id );
echo '<img src="'.$thumbnail[0].'" alt="'.$media_file->post_title.'" />';
}
}

Resources