2

我想在 Wordpress 主题中创建一个文件,我将在其中添加我自己的代码、编辑个人资料、显示个人资料信息,也许还可以通过编程方式插入帖子/元数据。

所以它需要是 www.mysite.com/profile.php 或 www.mysite.com/profile/

我不想使用 Buddy Press 或任何其他插件。

我知道模板系统是如何工作的,我不想要页面模板。

它可能是一个类,稍后,我不想更改 .htaccess 文件,如果我必须,我将不胜感激 filter 函数如何从 functions.php 执行此操作

基本上只是一个简单的 .php 文件,我可以链接到,位于主题根目录中。

include('../../../wp-load.php');

并编写我想要的任何代码。

任何不太“hacky”的创造性解决方案将不胜感激。

在我决定提问之前,花了大约 2 天的时间在谷歌上搜索这个问题。

非常感谢。

4

1 回答 1

1

好的,我设法做到了,花了我 2 天的时间才弄清楚。这是我设法做到的:

  1. 制作一个插件文件夹。
  2. 在该插件文件夹中制作 1x php 文件。所以 index.php

好的,首先我们需要注册插件,我这样做了,在您的 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 个参数。

  1. 是标题
  2. 蛞蝓
  3. 帖子类型
  4. 短代码。
  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 个页面,分别是配置文件、注册和配置文件编辑。

就是这样,你有你的前端用户个人资料空白页面,你可以用简码编写页面输出,创建更多页面,放置你喜欢的任何表单或元素并创建体面的个人资料(其中没有任何你没有的东西'不需要像插件一样。)

希望这会有所帮助,我很难弄清楚这一点。干杯!

于 2013-09-30T11:18:31.787 回答