我的简单快捷码从文件夹中以文本文件的形式检索文章列表。这些文章是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\');
最合适的回答,由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: 我把这个答案集中在我认为让您失望的部分代码上。我不相信短代码方法是一个理想的解决方案(例如,编写一个简单的插件,循环遍历文件并一次性创建所有帖子条目可能更好)。然而,我希望这个答案能帮助你现在就实现你的目标;总是有机会根据需要进行优化。