我想在Wordpress主题中创建一个文件,我将添加自己的代码,编辑个人资料,显示个人资料信息,以及可能以编程方式插入帖子/元数据的功能。
所以需要www.mysite.com/profile.php或www.mysite.com/profile /
我不想使用Buddy Press或任何其他插件。
我知道模板系统是如何工作的,我不想要一个页面模板。
它可能是一个类,稍后,我不想更改.htaccess文件,如果我必须我会欣赏过滤器功能如何从functions.php
基本上只是一个简单的.php文件,我可以链接到,位于主题根目录。
include('../../../wp-load.php');
并编写我想要的任何代码。
任何不太“hacky”的创意解决方案都将受到赞赏。
在我决定提问之前,花了大约2天的时间用谷歌搜索我的头。
非常感谢。
答案 0 :(得分:1)
好的,我设法做到了这一点,花了我2天的时间来搞清楚。以下是我设法做到的方法:
好的,首先我们需要注册插件,我在你的index.php粘贴中这样做了 这段代码。
function activate_profile_plugin() {
add_option( 'Activated_Plugin', 'Plugin-Slug' );
/* activation code here */
}
register_activation_hook( __FILE__, 'activate_profile_plugin' );
然后,当您只在注册个人资料页面注册一个插件时,我们需要一个功能。
function create_profile_page( $title, $slug, $post_type, $shortcode, $template = null ) {
//Check if the page with this name exists.
if(!get_page_by_title($title)) {
// if not :
$page_id = -1;
$page_id = wp_insert_post(
array(
'comment_status' => 'open',
'ping_status' => 'open',
'post_content' => $shortcode,
'post_author' => 1, // Administrator is creating the page
'post_title' => $title,
'post_name' => strtolower( $slug ),
'post_status' => 'publish',
'post_type' => strtolower( $post_type )
)
);
// If a template is specified in the function arguments, let's apply it
if( null != $template ) {
update_post_meta( get_the_ID(), '_wp_page_template', $template );
} // end if
return $page_id;
}
}
好的,所以我们创建了以编程方式注册页面的函数。它有5个参数。
对于短代码模板,您需要使用完整的页面输出制作短代码 并将其作为参数添加到此函数中,因此对于注册页面,它将是一个包含注册表单等的短代码。
例如:
function registration_shortcode(){
echo 'Wellcome to Registration page';
}
add_shortcode('registration_output', 'registration_shortcode');
接下来我们只需要在插件加载时调用它一次。
所以我们这样做:
function load_plugin() {
if ( is_admin() && get_option( 'Activated_Plugin' ) == 'Plugin-Slug' ) {
delete_option( 'Activated_Plugin' );
/* do stuff once right after activation */
// example: add_action( 'init', 'my_init_function' );
create_profile_page('Registration', 'registration', 'page', '[registration_output]');
create_profile_page('Profile', 'profile', 'page', '[profile_shortcode]');
create_profile_page('Profil Edit', 'profile-edit', 'page', '[edit_shortcode]');
}
}
add_action( 'admin_init', 'load_plugin' );
好的,这只会在插件加载时执行一次,它会创建3个页面,分别是个人资料,注册和个人资料编辑。
就是这样,你有你的前端用户配置文件空白页,你可以用短代码编写页面输出,创建更多页面,放置你喜欢的任何形式或元素,并创建合适的配置文件(没有任何东西你不需要像插件一样。)
希望这会有所帮助,我很难理解这一点。干杯!