如何从管理面板更新WP_Query数组(category_name)?

时间:2014-08-31 08:55:30

标签: php wordpress

基本上我需要在wordpress管理面板(页面编辑器)中创建一个部分,因此管理员可以在物理上选择(或写入)一个类别。然后创建页面(自定义模板)仅显示选定(书面)类别的帖子。

通常我会在代码中指定它:

    <?php $works = new WP_Query(array(
        'post_type' => 'my_post_type',
        'category_name' => 'My Category Name'
    )); ?>

现在我需要做出类似的事情:

    <?php $works = new WP_Query(array(
        'post_type' => 'my_post_type',
        'category_name' => 'THIS TEXT IS EDITABLE IN A CUSTOM FIELD FROM ADMIN PANEL'
    )); ?>

目前我已经尝试过这段代码,但它不能像我预期的那样工作:

    <?php $works = new WP_Query(array(
        'post_type' => 'my_post_type',
        'category_name' => '<?php $categoryname = types_render_field("category-name", array("raw"=>"true","separator"=>";")); echo $categoryname; ?>'
    )); ?>

PS。我不是一个铁杆php / wordpress开发者 - 仍在学习。

有任何帮助和建议吗?也许我错过了一些非常愚蠢和简单的东西?

1 个答案:

答案 0 :(得分:0)

第1步:创建元框。

您需要创建一个元框,以便显示和保存表单字段。您可以使用WordPress函数add_meta_box()执行此操作。将其包装在函数中并将其挂钩到add_meta_boxes

参考:http://codex.wordpress.org/Function_Reference/add_meta_box

第2步:显示表单字段

add_meta_box()的第三个参数允许您指定一个回调函数,该函数在元框中打印出您的表单字段。

也许像<input type="text" name="category_name" value="" />

第3步:检查是否已提供值并在WP_Query

中使用该值

根据您的上述代码,可能是这样的:

$works = new WP_Query( array(
    'post_type' => 'my_post_type',
    'category_name' => $_POST['category_name'] )
));

注意:使用WordPress随机数来验证请求来自正确的屏幕并获得适当的授权也是一种好习惯。

参考:http://codex.wordpress.org/WordPress_Nonces