在页面内显示存档(在下拉列表中)和类别(在下拉列表中)
Posted
技术标签:
【中文标题】在页面内显示存档(在下拉列表中)和类别(在下拉列表中)【英文标题】:Display archive (in dropdown) and category (in dropdown) inside a page 【发布时间】:2012-07-15 15:43:19 【问题描述】:我有一个问题:
我有一个存档模板页面,我想在其中显示两个下拉菜单:存档和类别下拉菜单,以及当我单击时11 月份的存档,因此所有项目将从 11 月开始显示在侧面,它也可以工作......但是,如果您选择一个菜单项,那么将显示所有项目,而不仅仅是该类别的帖子。
代码如下:
archives.php 中有这段代码(这里都是正确的......我认为):
<div id="archive-browser">
<div>
<h4>Month</h4>
<select id="month-choice">
<option val="no-choice"> — </option>
<?php wp_get_archives(array(
'type' => 'monthly',
'format' => 'option'
)); ?>
</select>
</div>
<div>
<h4>Category</h4>
<?php
wp_dropdown_categories('show_option_none= -- ');?>
</div>
</div>
<div id="archive-wrapper">
<div id="archive-pot">
</div></div>
在另一个名为 Archives-getter.php 的模板中,有这段代码,这里是错误的地方:
<?php
/*
Template Name: Archives Getter
*/
$year = htmlspecialchars(trim($_POST));
$month = htmlspecialchars(trim($_POST));
$cat = htmlspecialchars(trim($_POST));
$querystring = "year=$year&monthnum=$month&cat=$cat&posts_per_page=-1";
query_posts($querystring);
?>
<?php if (($year == '') && ($month == '') && ($cat == '-1')) ?>
<table id="archives-table"><tr><td style='text-align: center; font-size: 15px; padding: 5px;'>Please choose from above.</td></tr></table>
<?php else ?>
<table id="archives-table">
<?php
if (have_posts()) : while (have_posts()) : the_post(); ?>
<tr>
<td><img src="<?php echo get_post_meta($post->ID, 'PostThumb', true); ?>" style="width: 35px;" /></td>
<td><a href='<?php the_permalink(); ?>'><?php the_title(); ?></a></td>
<td><?php comments_popup_link(' ', '1 Comment', '% Comments'); ?></td>
<td><?php the_date('m/j/Y'); ?></td>
</tr>
<?php
endwhile; else:
echo "<tr><td style='text-align: center; font-size: 15px; padding: 5px;'>Nothing found.</td></tr>";
endif;
?>
</table>
<?php ?>
这两个是连接在一起的,所以当我运行档案模板时,它会从 getter 中调用数据。
我认为错误出在查询字符串的某个地方……只有类别下拉列表不显示帖子。谢谢你的帮助。
谢谢,但是存档下拉列表工作正常...但是当我单击类别 XY 时,类别下拉列表不显示她类别上的帖子。下面是jquery代码,因为它是用this和post字段名连接起来的:
我更改了帖子字段名称:
$year = htmlspecialchars(trim($_POST['year_y']));
$month = htmlspecialchars(trim($_POST['month_m']));
$cat = htmlspecialchars(trim($_POST['cat_c']));
jQuery(function()
jQuery("#archive-wrapper").height(jQuery("#archive-pot").height());
jQuery("#month-choice").change(function()
// Update category choice dynamically
// This is much harder, needs another intermediary getter
);
jQuery("#archive-browser select").change(function()
jQuery("#archive-pot")
.empty()
.html("<div style='text-align: center; padding: 30px;'><img src='' /></div>");
var dateArray = jQuery("#month-choice").val().split("/");
var y = dateArray[3];
var m = dateArray[4];
var c = jQuery("#cat").val();
jQuery.ajax(
url: "/archive-getter/",
dataType: "html",
type: "POST",
data: (
"year_y": y,
"month_m" : m,
"cat_c" : c
),
success: function(data)
jQuery("#archive-pot").html(data);
jQuery("#archive-wrapper").animate(
height: jQuery("#archives-table tr").length * 50
);
);
);
);
【问题讨论】:
您应该编辑您的问题或添加评论。当它不是答案时,不要将其添加为答案。除了我没有更正下拉列表之外,我更正了进入帖子查询的值,这是显示你说的帖子不起作用的部分。我将编辑我的答案以包含您在此处提到的新 _post 名称 【参考方案1】:您需要在此处指定帖子字段名称:
$year = htmlspecialchars(trim($_POST));
$month = htmlspecialchars(trim($_POST));
$cat = htmlspecialchars(trim($_POST));
应该是这样的(名称取决于您的表单字段
$year = htmlspecialchars(trim($_POST['year_y']));
$month = htmlspecialchars(trim($_POST['month_m']));
$cat = htmlspecialchars(trim($_POST['cat_c']));
这种表单输入应该有名字:
<select id="month-choice">
喜欢这个
<select id="month-choice" name="month">
【讨论】:
您好,对不起,我点击了回复...所以我现在真的在这里尝试了所有可能的组合 "codex.wordpress.org/Function_Reference/query_posts Example_4" ,但不幸的是,仍然没有下拉菜单...它根本不会按 XY XY 月的类别或类别显示那些产品的项目....我不知道该怎么做...有任何人想法或有人可以测试脚本。谢谢你的回答。以上是关于在页面内显示存档(在下拉列表中)和类别(在下拉列表中)的主要内容,如果未能解决你的问题,请参考以下文章