load custom fields on click

时间:2011-11-04 作者:elbatron

我有太多的数据存储在自定义字段中,我不想在页面加载时获取这些数据,相反,我会让用户有机会在单击时加载自定义字段值,可能是使用ajax。

有没有可行的方法可以做到这一点?

我还没有任何代码,只有wp循环。我正在考虑将自定义字段查询放在一个单独的php文件中,但我不知道如何在单个字段之间建立连接。php和单独的文件。(用ajax加载文件没有问题。)

更新:我不需要ajax,只是到目前为止让我很困惑。我只想在不同的页面模板上显示与帖子关联的自定义字段。我认为,自定义字段将是给定帖子的“子项”,单击链接将加载一个只有自定义字段的页面。

谢谢

1 个回复
SO网友:Alex Lane

我不知道你是否已经找到了这个问题的答案,因为它来自2011年,但我对如何检索数据有一个想法。

如果您创建了一个非常简单的php文件,将post ID作为get变量并显示post的自定义字段,会怎么样?

它看起来像这样:

<?php
    require_once($_SERVER[\'DOCUMENT_ROOT\'] . \'/wp-load.php\');
    $post_ID = $_GET[\'id\'];

    $custom = get_post_custom($post_ID);

    foreach ($custom as $key => $value) {
        if (($key != \'_edit_lock\' && $key != \'_edit_last\'))
            echo \'<tr><td>\' . $key . \'</td><td>\' . $value[0] . \'</td></tr>\';
    }
?>
这将创建一个包含名称(自定义字段名称)和值(自定义字段值)的表。如果不想使用表,当然可以根据需要格式化内部位。我只是想让你走上正轨。另外,请注意if 声明在那里。我确信您不想输出编辑锁定值或最后一个编辑值。

现在,了解如何从页面中获取此信息:

首先,您需要创建一个显示信息的按钮。

<a href="<?php echo bloginfo(\'template_directory\'); ?>/custom-field-provider.php?id=<?php echo $post->ID; ?>" class="show-more">See More Information</a>
还有一个框,显示您将在其中使用AJAX的内容:

<div id="more-information-box" style="display: none;"></div>
你会想在这里编一些很酷的jQuery小玩意儿。

$(document).ready(function () {
    $(\'.show-all\').on(\'click\', function (e) {
        // Since we\'re already passing the data through the link, we don\'t need to do anything else. Just pull the url from the link.
        var url = $(this).attr(\'href\');

        // A simple jQuery.get function to get the data from the php script we wrote earlier
        $.get(url, function (data) {
            $(\'#more-information-box\').hide().empty().append(data).fadeIn(500);
        });

        // And stop the link from actually going to the page.
        e.preventDefault();
        return false;  // Better safe than sorry, right?
    });
});
这应该能帮到你。

我知道这有点冗长,但我真的想覆盖所有的基地。我希望这对你有帮助。

结束

相关推荐

确定它是来自前端还是来自后端的AJAX调用

我正在开发一个只支持管理员的插件,它在接口中使用了一些ajax调用。该网站本身也依赖其前端的ajax调用。我希望能够识别由于“简单后端调用”、“AJAX后端调用”或“AJAX前端调用”而在何时加载WP。以最简单的形式,用例可以是只在管理页面上加载我的插件,或者从管理页面调用ajax。此外,它有助于在现场开发时不破坏前端:)到目前为止,我发现了以下几点:is_admin() 在所有AJAX调用上返回true(这很奇怪,imho)由于所有AJAX调用都是通过jQuery完成的,所以我可以通过HTTP变量确定A