仅挂钩到现有页面的帖子编辑屏幕

时间:2013-04-02 作者:Dwayne Charrington

我正在开发一个Wordpress主题,该主题隐藏了默认的WYSIWYG编辑器,并将其替换为一个定制的模块系统,该系统很好很漂亮,但我意识到,如果有人在预先存在的网站上使用该主题,他们将无法访问之前输入的内容,这显然很糟糕。

因此,基本上我需要做的是检查是否加载了预先存在的页面(希望通过挂钩),然后将内容移动到更新的模块系统,该系统将数据存储在自定义字段中。是否有一种简单的方法可以检测是否正在为已创建的页面加载后期编辑屏幕?

我不能依赖“已发布”的post\\u状态,因为我还需要考虑草稿和计划页面。也许仅仅检查页面是否有标题就足以区分新页面和已创建的页面?

下面虚构的代码描述了我希望能够做到的事情:

如果[页面编辑屏幕和页面预先存在且有内容]

然后

将默认的编辑器内容导入到自定义字段中

2 个回复
最合适的回答,由SO网友:Jake 整理而成

您应该只需要在现有帖子上运行此操作,因为新帖子将以您指定的方式创建。

add_action( \'load-post.php\', \'custom_content_conversion\' );
function custom_content_conversion()
{
    if (! empty($_GET[\'post\']) )
    {
        // Get the post object
        $post = get_post($_GET[\'post\']);

        // If the post object has content, store it in the meta field you are using
        if (! empty($post->post_content) )
        {
            update_post_meta($post->ID, \'your_custom_key\', $post->post_content);
        }
    }
}

SO网友:fuxia

只需检查$_GET[\'post\']. 新帖子没有帖子ID:

add_action( \'load-post-new.php\', \'wpse_94212_detect_existing_post\' );
add_action( \'load-post.php\', \'wpse_94212_detect_existing_post\' );

function wpse_94212_detect_existing_post()
{
    print \'<pre>$post = \' . htmlspecialchars( print_r( $_GET[\'post\'], TRUE ), ENT_QUOTES, \'utf-8\', FALSE ) . "</pre>\\n";
}
如果有ID使用get_post( $_GET[\'post\'] ) 检索和更改内容。

结束

相关推荐

WP_Query or get_posts?

使用“fields”=>“ids”参数时,在下面的代码中创建新的WP\\u查询是否比执行get\\u post更好?如果使用WP\\u查询,循环会是什么样子?function myplugin_delete_image_items( $postid ) { $args = array( \'post_type\' => \'myplugin_image_item\', \'cache_results\' =&g