分类: 建站知识

  • 获取wordpress主题目录路径的函数

    获取存放主题的目录URL

    echo get_theme_root_uri();
    //输出:http://www.wodepress.com/wp-content/themes

    获取当前启用的主题目录的URL

    echo get_stylesheet_directory_uri();
    //输出:http:/www.wodepress.com/wp-content/themes/jianzhanpress

    可以使用在需要主题目录URL的地方,例如图片

    <img src="<?php echo get_stylesheet_directory_uri() ?>/images/wodepress.png">
  • wordpress给指定ID分类添加特定的字段

    要在WordPress中为不同的分类添加特定的字段,您可以使用自定义字段(Custom Fields)功能。以下是一种方法,通过编写自定义的函数来实现。

    首先,您需要创建一个自定义的函数来添加特定的字段。您可以在WordPress主题的functions.php文件中添加以下代码:

    function add_custom_fields($post_id) {
      // 检查是否为新文章
      if (isset($_POST['post_ID'])) {
        $post_id = $_POST['post_ID'];
      }
    
      // 获取当前文章的分类
      $categories = get_the_category($post_id);
    
      foreach ($categories as $category) {
        // 添加特定的字段
        add_post_meta($post_id, 'category_' . $category->name, '自定义字段值', true);
      }
    }
    
    add_action('save_post', 'add_custom_fields');

    上述代码中,add_custom_fields函数将在保存文章时被调用。它首先检查是否为新文章,然后获取当前文章的分类。接下来,对于每个分类,它将使用add_post_meta函数添加一个特定的字段。字段的名称以”category_”开头,后面跟着分类的名称。您可以根据需要自定义字段的名称和值。

    接下来,您需要将上述代码添加到您的WordPress主题的functions.php文件中,并保存文件。然后,您就可以在发布文章时为每个分类添加特定的字段了。

    请注意,上述代码只是一种实现方式,您可以根据您的需求进行修改和扩展。此外,如果您使用的是插件来管理自定义字段,那么您可能需要使用插件提供的特定函数来实现相同的功能。

  • 隐藏wordpress后台登陆地址

    要隐藏WordPress后台登录地址,可以使用以下代码和方法:

    编辑wp-login.php文件:

    打开WordPress的wp-login.php文件,找到以下代码:

    if ( isset($_GET['action']) && $_GET['action'] == 'login' )

    将其修改为:

    if ( isset($_GET['checklogin']) && $_GET['checklogin'] == '1' )


    创建.htaccess文件:

    在WordPress根目录下创建一个名为.htaccess的文件,如果已经存在,请打开它。

    在.htaccess文件中添加以下代码:

    RewriteEngine On
    RewriteCond %{QUERY_STRING} ^checklogin=1$
    RewriteRule ^wp-login\.php$ - [L]
    RewriteRule ^wp-admin$ - [L]
    RewriteCond %{QUERY_STRING} ^checklogin=1$
    RewriteRule ^wp-admin/network$ - [L]
    RewriteCond %{REQUEST_URI} !wp-loginout\.php
    RewriteRule ^wp-admin/(.*\.php)$ /wp-admin/checklogin.php?checklogin=1&%{REQUEST_URI} [QSA,L]

    保存并关闭.htaccess文件。

    创建checklogin.php文件:

    在WordPress根目录下创建一个名为checklogin.php的文件,如果已经存在,请打开它。

    在checklogin.php文件中添加以下代码:

    <?php
    define('WP_USE_THEMES', false);
    require('./wp-load.php');
    if ( isset($_GET['checklogin']) && $_GET['checklogin'] == '1' ) {
        wp_redirect(site_url());
        exit();
    }
    ?>

    保存并关闭checklogin.php文件。

    登录测试:

    尝试通过访问http://www.wodepress.com/wp-login.php进行登录,应该会直接重定向到网站的首页,而不会显示登录页面。

    这样,WordPress后台的登录地址就被成功隐藏了。请确保在进行任何更改之前备份您的网站文件和数据库。

  • wordpress不同栏目调用不同的头部header模板

    在WordPress中,可以使用不同的顶部模板来展示不同栏目的内容。下面是一种方法来实现这个功能:

    创建一个新的WordPress主题,或者在现有的主题中创建一个新的目录。
    在新目录中创建多个顶部模板文件,例如 top-home.php、top-archive.php、top-category.php、top-search.php 等。
    在每个顶部模板文件中,根据需要添加所需的HTML和WordPress代码。这些模板可以根据不同的条件来调用,例如当前页面类型、查询参数等。
    在主题的 functions.php 文件中添加以下代码,以便根据不同的栏目调用不同的顶部模板:

    function call_top_template() {
        global $wp_query;
        $wp_query->query_vars['template_top'] = 'top-home.php'; // 默认使用 home 栏目的顶部模板
    
        // 根据当前页面类型判断调用哪个顶部模板
        if (is_archive()) {
            $wp_query->query_vars['template_top'] = 'top-archive.php'; // archive 页面使用 archive 栏目的顶部模板
        } elseif (is_category()) {
            $wp_query->query_vars['template_top'] = 'top-category.php'; // category 页面使用 category 栏目的顶部模板
        } elseif (is_search()) {
            $wp_query->query_vars['template_top'] = 'top-search.php'; // search 页面使用 search 栏目的顶部模板
        }
    
        // 调用顶部模板
        load_template( locate_template( $wp_query->query_vars['template_top'] ), false, $args );
    }
    add_action( 'wp', 'call_top_template' );


    在主题的 header.php 文件中,将以下代码添加到 标签之前:

    <?php call_top_template(); ?>

    根据需要,在每个栏目的模板文件中添加所需的HTML和WordPress代码。例如,在 top-home.php 中添加针对主页的顶部样式和内容。
    保存文件并上传到WordPress主题目录中。
    激活新主题或重新加载现有主题。

    现在,根据不同的栏目类型,WordPress将自动调用相应的顶部模板来展示内容。你可以根据需要创建更多的顶部模板文件,并根据条件进行调用。

  • 为wordpress添加自定义多级菜单的方法

    要在WordPress中创建多级菜单,您需要使用递归函数来处理菜单项的嵌套关系。下面是一个示例代码,可以帮助您实现多级菜单的添加和显示:

    打开您的WordPress主题文件,通常是header.php或functions.php。
    在主题文件中添加以下代码来注册菜单位置:

    register_nav_menus(array(
      'primary' => '主菜单',
    ));


    接下来,在主题文件中找到导航菜单的代码部分,通常是使用wp_nav_menu函数的地方。将其替换为以下代码:

    wp_nav_menu(array(
      'theme_location' => 'primary',
      'container' => 'nav',
      'container_class' => 'navbar',
      'menu_class' => 'navbar-nav',
      'fallback_cb' => 'WP_Bootstrap_Navwalker::fallback',
      'walker' => new WP_Bootstrap_Navwalker(),
    ));


    然后,在主题文件中添加以下自定义函数来创建多级菜单:

    function recursive_menu($items, $depth, $current_page, $parent_id = 0) {
      foreach ($items as $item) {
        if ($item->menu_item_parent == $parent_id) {
          $children = recursive_menu($items, $depth + 1, $current_page, $item->ID);
          if ($children) {
            echo '<ul class="dropdown-menu" role="menu">';
            echo '<li class="dropdown-item" role="presentation">' . $item->title . '</li>';
            echo $children;
            echo '</ul>';
          } else {
            echo '<li class="nav-item' . ($item->object_id == $current_page ? ' active' : '') . '" role="presentation">' . $item->title . '</li>';
          }
        } else {
          echo '<li class="nav-item' . ($item->object_id == $current_page ? ' active' : '') . '" role="presentation">' . $item->title . '</li>';
        }
      }
    }


    现在,您可以使用上述的递归函数来渲染多级菜单。将以下代码添加到您的主题文件中的适当位置,例如header.php或functions.php:

    function wp_bootstrap_navwalker() {
      $args = array(
        'theme_location' => 'primary',
        'walker' => new WP_Bootstrap_Navwalker(),
      );
      return $args;
    }

    最后,保存文件并刷新您的WordPress网站。您应该能够看到自定义的多级菜单显示在顶部导航栏中。

    请注意,上述代码只是一个示例,您可以根据自己的需求进行修改和定制。另外,确保在修改主题文件之前备份您的文件,以防止意外情况发生。

  • 自定义WordPress顶部的菜单的方法

    要自定义WordPress顶部的菜单,你需要使用WordPress的菜单系统。首先,你需要创建自定义菜单,然后将其设置为顶部导航菜单。

    以下是创建自定义菜单并设置其为顶部导航菜单的步骤:

    • 登录到WordPress管理界面。
    • 转到“外观”>“菜单”选项。
    • 点击“创建新菜单”按钮。
    • 为新菜单输入名称,例如“顶部菜单”。
    • 添加你想要的菜单项。你可以添加页面、文章、自定义链接等。
    • 当你完成添加菜单项后,点击“保存菜单”按钮。
    • 现在,你需要将该菜单设置为顶部导航菜单。转到“外观”>“主题设置”。
    • 在主题设置中找到“导航菜单”选项,并将其设置为刚刚创建的菜单的ID。
    • 保存更改。

    现在,你的自定义菜单应该已经显示在WordPress网站的顶部了。

    如果你想进一步自定义顶部菜单的样式,你可以使用以下代码将自定义样式添加到你的主题的header.php文件中:

    <nav id="site-navigation" class="navbar navbar-expand-lg navbar-light bg-light">
      <a class="navbar-brand" href="<?php echo esc_url(home_url('/')); ?>">Your Logo</a>
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="collapse navbar-collapse" id="navbarNav">
        <?php
        wp_nav_menu(array(
          'theme_location' => 'primary',
          'menu_id'        => 'menu-primary',
          'menu_class'     => 'nav navbar-nav',
        ));
        ?>
      </div>
    </nav>

    在这个示例中,我们使用了Bootstrap样式的导航栏,并使用wp_nav_menu函数将自定义菜单添加到其中。你可以根据你的需要修改这个代码来改变导航栏的样式和布局。

  • 一段代码就可禁止wordpress自动更新

    进行过二次开发的wordpress网站,最好要把自动更新禁止了。不然,自动更新后的wordpress网站可能无法访问。特别是修改过wordpress核心文件的二次开发,一定要这样做。

    define("AUTOMATIC_UPDATER_DISABLED", true); // 禁用自动更新 wp-config.php 
    
    add_filter("pre_site_transient_update_core", "fake_update_callback"); // 关闭核心提示  
    add_filter("pre_site_transient_update_plugins", "fake_update_callback"); // 关闭插件提示  
    add_filter("pre_site_transient_update_themes", "fake_update_callback"); // 关闭主题提示
    
    remove_action("admin_init", "_maybe_update_core");    // 禁止 WordPress 检查更新
    remove_action("admin_init", "_maybe_update_plugins"); // 禁止 WordPress 更新插件
    remove_action("admin_init", "_maybe_update_themes");  // 禁止 WordPress 更新主题
    
    function fake_update_callback(){
        return null;
    }

    把上面的代码添加到functions.php中就可以实现。

  • 用wordpress制作一个简单的插件案例

    当开发一个WordPress插件时,你需要创建一个PHP文件,并使用WordPress提供的钩子函数来扩展和自定义WordPress的核心功能。

    以下是一个简单的示例,演示如何创建一个简单的WordPress插件,该插件将在文章列表页面的末尾添加一个新的短代码。

    1. 创建一个新的PHP文件,例如 my_shortcode_plugin.php
    2. 在文件开头添加以下代码,以声明插件的名称和版本:
    <?php
    /**
     * My Shortcode Plugin
     * Plugin Name: My Shortcode Plugin
     * Plugin URI: https://www.wodepress.com/my-shortcode-plugin
     * Description: Adds a new shortcode to the WordPress posts.
     * Version: 1.0
     * Author: jianzhanpress
     * Author URI: https://www.wodepress.com
     */
    1. 添加钩子函数,以在文章列表页面的末尾添加新的短代码。在文件中间位置添加以下代码:
    phpfunction my_shortcode_function($atts, $content = '') {
    return '<p>This is a custom shortcode.</p>';
    }
    add_shortcode('myshortcode', 'my_shortcode_function');

    以上代码定义了一个名为 my_shortcode_function 的函数,该函数将返回一个新的短代码内容。add_shortcode 函数用于将自定义的短代码 [myshortcode] 与 my_shortcode_function 函数关联起来。

    1. 保存文件并将文件上传到WordPress插件目录中(通常是 /wp-content/plugins/)。
    2. 登录到WordPress后台,激活插件。
    3. 在文章编辑器中输入 [myshortcode],保存文章。
    4. 预览文章列表页面,你会在每个文章的末尾看到自定义的短代码内容 <p>This is a custom shortcode.</p>

    这只是一个简单的示例,用于演示如何创建WordPress插件。你可以根据自己的需求扩展和定制插件的功能。请参考WordPress官方文档以获取更多关于插件开发的详细信息和钩子函数的用法。

  • 如何在WordPress中通过post文章ID获取分类名称

    这是个简单的方法,在WordPress中列出一篇文章的所属类别名称。通过以下这段代码就可以实现。

    $postId = 1;
    //note: if you code in single.php, do not need to pass the id
    $categories = get_the_category($postId);
    
    //iterate categories and print $category->cat_name
    foreach($categories as $category){
        echo '<a href="' . get_category_link($category) . '">' . $category->cat_name . '</a>';
    }
  • wordpress回收站功能增强

    1、自定义WordPress回收站删除时间

    WordPress回收站里的内容,默认会在30天之后删除,逻辑非常简单,否则WordPress回收站会越来越臃肿。当然,如果你觉得30天太长,我们也可以自定义内容存放的时间,我们需要把下面的代码加入到wp-config.php里。

    define('EMPTY_TRASH_DAYS', 888);
    

    说明:888为天数

    2、将WordPress回收站设置成删除功能。

    其实以上很好理解,就是将删除的评价、文章将不进入回收站而是直接删除。我们需要把下面的代码加入到wp-config.php里。

    只需要把上面代码中的888改为0即可。