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


How to make WP_Query array (category_name) updateable from admin panel?

基本上我需要在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:创建元框。

您需要创建一个元框,以便显示和保存表单字段。您可以使用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 nonce来验证请求是否来自正确的屏幕并获得适当的授权也是一种很好的做法。

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