UPDATE_METADATA()为每次页面刷新追加短码数据

时间:2019-04-16 作者:chunkybyte

Wordpress新手。

我有一个在管理面板上编写多个短代码的实现,对于每个短代码,我将使用在帖子中找到的每个短代码更新帖子元数据键。

这是更新我的短代码中元数据的代码:

<?php
    function shortcode_counter($atts)
    {
        $a = shortcode_atts(array(
            \'attr1\' => null
        ), $atts);


        $postID = get_the_ID();

        // \'shortcode_keys\' is the metadata key
        if (metadata_exists(\'post\', $postID, \'shortcode_keys\')) {
            $shortcode_keys[0] = get_post_meta($postID, \'shortcode_keys\');
        } else {
            $shortcode_keys = array();
        }
        $new_key = \'shortcode_widget_ids_\' . sizeof($shortcode_keys);
        array_push($shortcode_keys, $new_key);
        update_metadata(\'post\', $postID, \'shortcode_keys\', $shortcode_keys, \'\');

        return \'\';
    }

    add_shortcode(\'shortcode_counter\', \'shortcode_counter\');
?>
应为:1。在post上添加3个短代码。2、使用update\\u metadata()添加有关3个短代码的信息。因此,元键的数组长度为3。

实际值:1。第一次刷新时,元键按预期显示长度为3的数组。再次点击refresh,元键将保存一个长的复杂数组。

我的猜测是,即使在刷新之后,元数据也会保存信息。我需要元数据,因为我想在代码的其他地方使用此值。wordpress中是否有其他方法来保存这个数组信息,只获取我添加到帖子中的“n”个短码的数据。

1 个回复
SO网友:chunkybyte

因为我的帖子元数据即使在刷新时也保存着这些数据,所以我所要做的就是在处理完帖子内容上的所有短代码后删除这个元键。

为此,我制作了另一个短代码,并使用single.php 因为最后只处理一次。现在,一旦我刷新帖子,我每次都会用新信息更新帖子元数据。

这可能不是最好的解决方案。但如果有人在找一个,那就来吧。

相关推荐

redirect if shortcode exists

WordPress初学者。我试图检查用户请求的页面中是否存在短代码,如果存在,则在用户未登录时重定向。function redirect_to_home() { if (has_shortcode(get_the_content(), \'shortcode\')) { if(!is_admin() && !is_user_logged_in()) { //redirect exit(); }