list attachment on wordpress - wordpress

i have this code:
<?php
$valid_ext = array("pdf", "doc");
$args = array(
'post_type' => 'attachment',
'post_mime_type' => 'application/pdf',
'numberposts' => 40,
'post_status' => null,
'post_parent' => null, // any parent
);
$attachments = get_posts($args);
if ($attachments) {
foreach ($attachments as $post) {
$ext = getFileExt(wp_get_attachment_url($post_id, false));
if(in_array($ext, $valid_ext)) {
?>
<li>
<div class="entry-date">
<abbr class="published" title="<?php the_time('Y-m-d\TH:i:sO')?>">
<?php unset($previousday); printf( __( '%1$s – %2$s', 'sandbox' ), the_date( '', '', '', false ), get_the_time() )?>
</abbr>
</div>
<div id="post-<?php the_ID()?>" class="<?php sandbox_post_class()?> " style="padding:0; margin:0;">
<p style="font-size:11px; text-transform:uppercase;">
<?php setup_postdata($post);the_attachment_link($post_id, true);?>
</p>
</div>
</li>
<?php
}
}
}
?>
it gives me as output a date and a link with the document name.
<li>
<div class="entry-date">
<abbr title="2011-06-15T17:30:29+0200" class="published">
15 giugno 2011 – 17:30
</abbr>
</div>
<div style="padding:0; margin:0;" class="hentry p11 attachment inherit author-daniela-santanch category-senza-categoria untagged y2011 m06 d15 h17 " id="post-2158">
<p style="font-size:11px; text-transform:uppercase;">
<a title="la_stampa_07_06_2011" href="http://www.mpli.it/wp/wp-content/uploads/2011/06/la_stampa_07_06_2011.pdf">la_stampa_07_06_2011</a> </p>
</div>
i'd like to get the post title linking directly to the document.
any help?

Try this:
<?php
$args = array( 'post_type' => 'attachment', 'numberposts' => -1, 'post_status' => null, 'post_parent' => null );
$attachments = get_posts( $args );
if ($attachments) {
foreach ( $attachments as $post ) {
setup_postdata($post);
the_title();
the_attachment_link($post->ID, false);
the_excerpt();
}
}
?>

Related

How to define fallback image for get_the_post_thumbnail_url inside a shortcode

My shortcode is working fine but how to set a fallback image in there? Please suggestion
// display default post as a shortcode with prev/next link
function genericposts_shortcode($atts){
extract( shortcode_atts( array(
'expand' => '',
), $atts) );
global $paged;
$posts_per_page = 10;
$settings = array(
'showposts' => $posts_per_page,
'post_type' => 'post',
'orderby' => 'menu_order',
'order' => 'ASC',
'paged' => $paged
);
$post_query = new WP_Query( $settings );
$total_found_posts = $post_query->found_posts;
$total_page = ceil($total_found_posts / $posts_per_page);
$list = '<div class="bloglist">';
while($post_query->have_posts()) : $post_query->the_post();
$list .= '
<div class="bloglist__item">
<div class="bloglist__imgwrap">
<img src=" '. get_the_post_thumbnail_url(get_the_ID(),'full') .'">
</div>
<div class="bloglist__wrapt">
<div class="bloglist__datetitle">
<span class="bloglist__date"> '. get_the_date( 'd' ) . '</span>
<span class="bloglist__mnt"> '. get_the_date( 'M' ) . '</span>
<span class="bloglist__yr"> '. get_the_date( 'Y' ) . '</span>
<div class="bloglist__title"> '. get_the_title() .' </div>
</div>
<div class="bloglist__more">
Read More
</div>
</div>
</div>
';
endwhile;
$list.= '</div>';
if(function_exists('wp_pagenavi')) {
$list .='<div class="page-navigation">'.wp_pagenavi(array('query' => $post_query, 'echo' => false)).'</div>';
} else {
$list.='
<span class="prev-posts-links">'.get_previous_posts_link('Previous page').'</span>
<span class="next-posts-links">'.get_next_posts_link('Next page', $total_page).'</span>
';
}
return $list;
}
add_shortcode('post-shortcode', 'genericposts_shortcode');
I have solved the issue below way.
add_shortcode( 'post-shortcode', 'genericposts_shortcode' );
function genericposts_shortcode( $atts ) {
ob_start();
global $paged;
$posts_per_page = 9;
$settings = array(
'showposts' => $posts_per_page,
'post_type' => 'post',
'orderby' => 'menu_order',
'order' => 'ASC',
'paged' => $paged
);
$post_query = new WP_Query( $settings );
$total_found_posts = $post_query->found_posts;
$total_page = ceil($total_found_posts / $posts_per_page);
if ($post_query->have_posts() ) { ?>
<div class="bloglist">
<?php while ( $post_query->have_posts() ) : $post_query->the_post(); ?>
<div class="bloglist__item" id="post-<?php the_ID(); ?>">
<div class="bloglist__imgwrap">
<?php if( !empty(get_the_post_thumbnail()) ) { ?>
<?php the_post_thumbnail('full');?>
<?php } else { ?>
<img src="https://kanooelite.com/upgrade/wp-content/uploads/2020/11/placeholder.png" />
<?php } ?>
</div>
<div class="bloglist__wrapt">
<div class="bloglist__datetitle">
<span class="bloglist__date"> <?php echo get_the_date( 'd' ); ?></span>
<span class="bloglist__mnt"> <?php echo get_the_date( 'M' ); ?></span>
<span class="bloglist__yr"> <?php echo get_the_date( 'Y' ); ?></span>
<div class="bloglist__title"> <?php echo get_the_title(); ?></div>
</div>
<div class="bloglist__more">
Read More
</div>
</div>
</div>
<?php endwhile;
wp_reset_postdata(); ?>
</div>
<span class="prev-posts-links"><?php echo get_previous_posts_link('Previous page'); ?></span>
<span class="next-posts-links"><?php echo get_next_posts_link('Next page', $total_page); ?></span>
<?php $myvariable = ob_get_clean();
return $myvariable;
} ?>
<?php } ?>

Woocommerce custom product loop no longer working after update

I'm having an issue with a custom product loop for featured products. It worked fine before a update.
<?php
$args = array(
'post_type' => 'product',
'posts_per_page' => 4,
'tax_query' => array(
array(
'taxonomy' => 'product_visibility',
'field' => 'name',
'terms' => 'featured',
),
),
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
global $product;
$currency = get_woocommerce_currency_symbol();
$price = get_post_meta( get_the_ID(), '_regular_price', true);
$sale = get_post_meta( get_the_ID(), '_sale_price', true);
if($sale) {
echo '
<div class="pickproductsitem">
<div class="pickprodimage" style="background-image: url(' . get_the_post_thumbnail_url() . ');"></div>
<div class="prodname">'.get_the_title().'</div>
<div class="prodinfo">'. get_the_excerpt() .'</div>
<div class="prodprice"><span style="text-decoration: line-through;">Only '.$currency.$price.'</span><span style="color: green;"> SALE '.$currency.$sale.'</span></div>VIEW</div>';
}
elseif($price)
{
echo '
<div class="pickproductsitem">
<div class="pickprodimage" style="background-image: url(' . get_the_post_thumbnail_url() . ');"></div>
<div class="prodname">'.get_the_title().'</div>
<div class="prodinfo">'. get_the_excerpt() .'</div>
<div class="prodprice">Only '.$currency.$price.'</div>VIEW</div>';
}
endwhile;
wp_reset_query();
?>
I've tried fixing the Permalinks but it hasn't sorted the issue. I'm no expert at Woo or even Wordpress but this loop did work.
Thank you for any help.
If you want to display featured products then do use below code in your query args it will solve the issue.
<?php
$meta_query = WC()->query->get_meta_query();
$meta_query[] = array(
'key' => '_featured',
'value' => 'yes'
);
$args = array(
'post_type' => 'product',
'posts_per_page' => 4,
'meta_query' => $meta_query
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
global $product;
$currency = get_woocommerce_currency_symbol();
$price = get_post_meta( get_the_ID(), '_regular_price', true);
$sale = get_post_meta( get_the_ID(), '_sale_price', true);
if($sale) {
echo '
<div class="pickproductsitem">
<div class="pickprodimage" style="background-image: url(' . get_the_post_thumbnail_url() . ');"></div>
<div class="prodname">'.get_the_title().'</div>
<div class="prodinfo">'. get_the_excerpt() .'</div>
<div class="prodprice"><span style="text-decoration: line-through;">Only '.$currency.$price.'</span><span style="color: green;"> SALE '.$currency.$sale.'</span></div>VIEW</div>';
}
elseif($price)
{
echo '
<div class="pickproductsitem">
<div class="pickprodimage" style="background-image: url(' . get_the_post_thumbnail_url() . ');"></div>
<div class="prodname">'.get_the_title().'</div>
<div class="prodinfo">'. get_the_excerpt() .'</div>
<div class="prodprice">Only '.$currency.$price.'</div>VIEW</div>';
}
endwhile;
wp_reset_query();
?>

taxonomy template pagination not working gives 404 error

I have used taxonomy template texonomy-blog_category.php file.
But gives 404 error when i moved to page 2 .
Below is my code
<?php
get_header('newheader');
$tax = get_query_var('taxonomy');
$term = get_query_var('term');
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$count_args=array( 'post_type' => 'blog_post',
'tax_query' => array(
array(
'taxonomy' => $tax,
'field' => 'slug',
'terms' => $term,
),
),
);
$count_detail=query_posts($count_args);
//echo count($count_detail);exit;
$posts_per_page = 2;// get_option( 'posts_per_page' );
$max_page=ceil(count($count_detail)/$posts_per_page);
//wp_reset_query();
$args = array( 'post_type' => 'blog_post',
'tax_query' => array(
array(
'taxonomy' => $tax,
'field' => 'slug',
'terms' => $term,
),
),
'posts_per_page'=>$posts_per_page,
'paged' => $paged,'page'=>$paged,
'max_num_pages'=>$max_page,
);
$post_detail=query_posts($args);
?>
<div class="container">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 main-conten">
<div class="col-lg-8 col-md-8 col-sm-12 col-xs-12 blog-main">
<ul class="blog_listing">
<?php
for($i=0;$i<count($post_detail);$i++)
{
$postId=$post_detail[$i]->ID;
$ttl=get_the_title($postId);
$url=$post_detail[$i]->guid;
//print_r($post_detail[$i]);
?>
<li>
<a href="<?php echo $post_detail[$i]->guid; ?>" ><h1><?php echo get_the_title($postId); ?></h1></a>
<div class="blog-img">
<a href="<?php echo $post_detail[$i]->guid; ?>" >
<?php //$retina = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ) ?>
<?php echo get_the_post_thumbnail( $postId,array(760,331), $attr ); ?>
</a>
</div>
<span>
<?php echo date('d F , Y',strtotime($post_detail[$i]->post_date)); ?>
</span>
<p>
<?php echo $post_detail[$i]->post_excerpt; ?>
</p>
<a class="read-more" href="<?php echo $post_detail[$i]->guid; ?>">Read More</a> </li>
</li>
<?php }?>
</ul>
<div class="case_blog">
<?php
//wp_reset_postdata();
if (function_exists(custom_pagination)) {
custom_pagination($max_page,"",$paged);
}
?>
</div>
<?php //$custom_query = $temp; ?>
</div>
<div class="col-lg-4 col-md-4 col-sm-12 col-xs-12 blog_right_list blog-side">
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar("Blog Sidebar") ) : ?>
<?php endif; ?>
</div>
</div>
</div>
</div>
<?php get_footer();
?>
I don't know what is going wrong.please help me to get out of this.
Thanks in advance
Remove page parameter from $args, your code look like this.
$args = array( 'post_type' => 'blog_post',
'tax_query' => array(
array(
'taxonomy' => $tax,
'field' => 'slug',
'terms' => $term,
),
),
'posts_per_page'=>$posts_per_page,
'paged' => $paged,
'max_num_pages'=>$max_page,
);

WordPress onepage thumbnail

I'm creating a one-page theme for WordPress. In my index.php I'm listing all pages underneath each other:
<?php $args = array(
'sort_order' => 'ASC',
'sort_column' => 'menu_order', //post_title
'hierarchical' => 1,
'exclude' => '',
'child_of' => 0,
'parent' => -1,
'exclude_tree' => '',
'number' => '',
'offset' => 0,
'post_type' => 'page',
'post_status' => 'publish'
);
$pages = get_pages($args);
//start loop
foreach ($pages as $page_data) {
$content = apply_filters('the_content', $page_data->post_content);
$title = $page_data->post_title;
$slug = $page_data->post_name;
?>
<div id='<?php echo "$slug" ?>' class="section">
<div id="inner-content" class="wrap cf">
<div id="main" class="m-all cf" role="main">
<div class="content">
<h2 class="section-title"><?php echo "$title" ?></h2>
<?php echo "$content" ?>
<?php the_post_thumbnail('full'); ?>
</div>
</div>
</div>
<?php } ?>
However, my thumbnail does not show up... There is no error message, but as well no thumb. Any ideas?
Try this code
<?php $args = array(
'sort_order' => 'ASC',
'sort_column' => 'menu_order', //post_title
'hierarchical' => 1,
'exclude' => '',
'child_of' => 0,
'parent' => -1,
'exclude_tree' => '',
'number' => '',
'offset' => 0,
'post_type' => 'page',
'post_status' => 'publish'
);
$pages = get_pages($args);
//start loop
foreach ($pages as $page_data) {
$content = apply_filters('the_content', $page_data->post_content);
$title = $page_data->post_title;
$slug = $page_data->post_name;
?>
<div id='<?php echo "$slug" ?>' class="section">
<div id="inner-content" class="wrap cf">
<div id="main" class="m-all cf" role="main">
<div class="content">
<h2 class="section-title"><?php echo "$title" ?></h2>
<?php echo "$content" ?>
<?php echo get_the_post_thumbnail( $page_data->ID, 'thumbnail' ); ?>
</div>
</div>
</div>
<?php } ?>

how to get attachments from particular post id in wordpress

$argsThumb = array(
'order' => 'ASC',
'post_type' => 'attachment',
'post_parent' => $post->ID,
'post_mime_type' => 'image',
'post_status' => null
);
$attachments = get_posts($argsThumb);
if ($attachments) {
foreach ($attachments as $attachment) { ?>
<div class="item">
<a href="<?php wp_get_attachment_url($attachment->ID, 'large', false, false); ?>" class="zoom" rel="group">
<span class="thumb">
<img class="small" src="<?php wp_get_attachment_url($attachment->ID, 'medium', false, false); ?>" />
</span>
</a>
</div>
<?php } } ?>
wp_get_attachment_url takes only one parameter + you need to echo:
<?php echo wp_get_attachment_url( $attachment->ID ); ?>
Note: to get specific image sizes, use wp_get_attachment_image_src

Resources