获取静态POST_CONTENT的短码输出到数据库

时间:2020-05-12 作者:Codepix

我的简单快捷码从文件夹中以文本文件的形式检索文章列表。这些文章是html格式的(带有h2,p…)。我使用一个插件,它可以动态创建我需要的页面,并在其中插入我的短代码。在本文中,短代码运行良好,html呈现也可以,但是:

the problem: 短代码会随着每次页面加载而更新,并每次生成不同的内容。

你认为我不能“修复”这个问题的方法是什么?我试图在post\\u content中写入数据库中的短代码内容?并从文章中删除短代码,以便稍后在wordpress中编辑它们。我已经尝试了好几次,但都没有,谢谢你的帮助

function my_shortcode(){

    $path_to_myplugin = WP_PLUGIN_DIR . \'/my_plugin_name/\';
    $thema_folder = "themafolder";
    $passage = fopen($path_to_myplugin.\'nbr-init.txt\', \'r+\');//Stock passage, Start to 0
    $number_passage = fgets($passage); // Read the first line
    $number_passage += 1; // +1
    fseek($passage, 0); // cursor at start of file
    fputs($passage, $number_passage); // Rewrite the new number
    fclose($passage);
    @$file_name = $thema_folder."/"."art-".$thema_folder."-".$number_passage.".txt";
    $content = file_get_contents($path_to_myplugin.$file_name);// Ok it works 

// I try to write the shortcode to the post_content but not working:
    global $wpdb;
    $wpdb->insert{
        $args = array(
            \'post_content\' => $content
        )
    };
$content = wp_insert_post( $args );

    return $content;
}

add_shortcode (\'myshortcode\', \'my_shortcode\');

1 个回复
最合适的回答,由SO网友:Sarah Lewis 整理而成

您当前拥有的代码将创建一个新帖子,而不是更新正在使用短代码的帖子。为了更新帖子,您需要包含其ID(see the documentation).

以下是如何更新代码以包含ID:

global $post; // Use the global $post object for the current post.
$args = array(
    \'ID\'           => $post->ID,
    \'post_content\' => $content,
);
wp_insert_post( $args ); // Update the current post with the $content.

return $content;
我还删除了$wpdb 用法,因为您不需要直接访问数据库;这个wp_insert_post 函数将为您处理它。

<小时>Note: 我把这个答案集中在我认为让您失望的部分代码上。我不相信短代码方法是一个理想的解决方案(例如,编写一个简单的插件,循环遍历文件并一次性创建所有帖子条目可能更好)。然而,我希望这个答案能帮助你现在就实现你的目标;总是有机会根据需要进行优化。

相关推荐

如何使用php将html内容添加到自定义帖子类型的帖子中?

我正在尝试做一些我确信很基本的事情,但我不知道怎么做。设置如下:我使用CPT UI插件创建了一个名为board_docs, 我使用自定义字段插件为board\\u docs帖子类型创建了一个自定义字段。自定义字段允许您将文件添加为附件。添加此文件后,将创建一个新的永久链接(post)。当我点击永久链接时,页面是空的,只有页眉和页脚。How would I add an iframe (and other html content) to that page using php?我尝试在函数中使用循环hav