【问题标题】:Wordpress Profile File / PageWordpress 个人资料文件/页面
【发布时间】:2013-09-20 02:17:03
【问题描述】:

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

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

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

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

这可能是一个类,稍后,我不想更改 .htaccess 文件,如果我必须,我将不胜感激 filter 函数如何从 functions.php 中做到这一点

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

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

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

任何不太“老套”的创意解决方案都将不胜感激。

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

非常感谢。

【问题讨论】:

  • 你为什么不想完全使用插件?如果您对 wordpress 结构不是很熟悉,那么与已建立的插件相比,您自己的解决方案可能会被认为是 hacky。
  • 因为插件有很多我实际上不需要/想要的东西。
  • 您可能想要做的是下载最接近您需要的插件并对其进行逆向工程。用它来剥离它并制作你需要的东西。至少一个流行的通用插件可能已经不得不处理支持或漏洞问题。通过这种方式,您可能会学到很多关于 wp 插件解剖学的知识。这里没有人会在答案中写出来,如果你还没有开始,那么它太宽泛了,无法给出细节。您必须尝试构建一些东西,然后在遇到困难时发布并询问该问题。
  • 我构建了许多插件,从 tinmyce 短代码界面插件到各种小部件,再到用于 wordpress 电子商务平台的 ajax 产品设计工具。实际上,在 3 年的开发过程中,这是我的第一个问题,也是我第一次真正陷入困境。但是,您确实给了我一个不错的建议而不是答案,我将下载配置文件生成器或其他一些插件并尝试对其进行逆向工程。如果我设法解决此问题,将在此处报告答案。

标签: wordpress


【解决方案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 个页面,分别是 Profile、Registration 和 Profile Edit。

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

希望这会有所帮助,解决这个问题对我来说很痛苦。干杯!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 2015-10-08
    • 1970-01-01
    • 2012-11-15
    相关资源
    最近更新 更多