I have a question about being able to get values out of the hidden input boxes in this:
<?php $i = 0; $j = 1;?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', get_post_format() );
$postid[$i] = get_the_ID();
echo "<input type='hidden' value='".$postid[$i]."' id='hiddenpostitle".$j."' name='hiddenpostitle'/> ";
echo "<input type='hidden' value='".$j."' id='hiddenpostnumfield".$j."'/> ";
?>
<?php
$i++;
$j++;
?>
<?php endwhile; endif; ?>
So what this does is draw in all the post and formats them according to WordPress. While each post is looped I create 2 input boxes for each, one with the post id with a incremental variable and one that stores the value of the above input box with an incremental variable. I am making a product overview so I need to be able to access the proper post and have that sent using JSON.
The part that I am stuck on is the getting the correct post type that was clicked.
Here is my JQuery code so far:
<script type="text/javascript">
$(function () {
$('.item-post a').each(function (i) {
$(this).on("click", function (e) {
alert(i);
var num = $('#hiddenpostitle').val();
alert(num);
var prodname = $('#hiddenpostitle' + num /* + (i+1)*/).val();
$.post('overviewcheck-515adfzx8522', {'ProdName': prodname}, function (response) { }, 'json');
});
});
$('.item-post a').colorbox({ opacity: 0.3, href: "../overviewa512454dzdtfa" });
});
</script>
This is not working properly because it will always give me the first post there is because I am not getting the associated product that was clicked.
Example: lets say you click 3 and 1 is first, you will always get 1 even if you click 2 or 3 or 4.
I am really stuck and need help on this. Not to sure how to proceed.
Merry Christmas!
UPDATE:
new Code being used
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div class="post-id-holder">
<?php get_template_part('content',get_post_format()); ?>
<div class="post-id-data" post-id="<?php echo get_the_ID(); ?>" post-title="something"></div>
</div>
<?php endwhile; endif; ?>
<script type="text/javascript">
(document).ready(function() {
$('.item-post a').click(function(){
// find the article for the post
var article = $(this).parentsUntil('article').parent();
var post_id = article.attr("id");
var post_title $('.entry-title a',article).text();
alert(post_id);
alert(post_title);
$.post('overviewcheck-515adfzx8522',
{
'ProdName': prodname
},
function(response) {
},
'json'
);
$('.item-post a').colorbox({opacity:0.3, href:"../overviewa512454dzdtfa"});
});
});
ANSWER:
Thanks Matt! 🙂
Here is the code, so if you ever run into this you can use it!
WordPress Queried section:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div class="post-id-holder">
<?php get_template_part('content',get_post_format()); ?>
<div class="post-id-data" post-id="<?php echo get_the_ID(); ?>" post-title="something"> </div>
</div>
<?php endwhile; endif; ?>
JQuery Side:
<script type="text/javascript">
$(document).ready(function() {
$('.item-post a').click(function(){
// find the article for the post
var article = $(this).parentsUntil('article').parent();
var post_id = article.attr("id");
var post_title = $('.entry-title a',article).text();
$.post('overviewcheck-515adfzx8522',
{
'ProdName': post_title
},
function(response) {
},
'json'
);
});
$('.item-post a').colorbox({opacity:0.3, href:"../overviewa512454dzdtfa"});
});
</script>
Again thanks everyone! Merry Christmas!
There really isn’t a need to use an input tag if you are not creating a form. It will just cause issues if by chance your code is executed inside a form block. If you just want to discover the post-id at javascript time, then it’s better to stuff it into a property of a div or span tag.
Later you can access it via javascript as such.
EDIT:
After reviewing the HTML, I think you can get the post ID and title without having to add anything to the template.