原因是WordPress所在主机未安装php-xml
拓展
安装php-xml模块
apt install php74-mod-xml
重启服务
service apache2 restart
xuenhua’s 站点
原因是WordPress所在主机未安装php-xml
拓展
安装php-xml模块
apt install php74-mod-xml
重启服务
service apache2 restart
0、基本参数
假定你的域名是abc.com
Apache服务端口8080
nginx和Apache同在一台机器
代理后端口为80
1、配置nginx
server{
listen 80;
server_name abc.com;
location / {
#下面这两行获取真实地址,避免跳转127.0.0.1
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
}
}
2、修改wordpress
由于配置了nginx代理后,系统会自动跳转127.0.0.1,导致无法登录,无法通过页面进行修改域名配置。
此时可以通过数据库进行直接修改
登录数据库,找的wp_options表修改
MariaDB > select * from wp_options where option_name='home' or option_name='siteurl';
+-----------+-------------+--------------------------------------+----------+
| option_id | option_name | option_value | autoload |
+-----------+-------------+--------------------------------------+----------+
| 2 | siteurl | https://abc.com | on |
| 3 | home | https://abc.com | on |
+-----------+-------------+--------------------------------------+----------+
修改option_value 为域名即可。
the_tags是WordPress中的一个内置函数,用于获取文章的标签(Tag)信息并将其显示在文章页面上。本文和大家一起学习下the_tags的基本知识及实例应用。
一、函数语法
the_tags( string $before = ”, string $sep = ”, string $after = ” )
二、参数说明
1、$before(可选):在标签列表之前输出的字符串,默认为空。
2、$sep(可选):标签之间的分隔符,默认为空格。
3、$after(可选):在标签列表之后输出的字符串,默认为空。
三、实例应用
假设我们有一篇文章,其标签为”技术”、”编程”、”WordPress”。我们可以使用the_tags函数来在文章页面上显示这些标签。
<?php
// 在主题的单篇文章模板文件(例如single.php)中使用the_tags函数
if (have_posts()) {
while (have_posts()) {
the_post();
?>
<div class=”entry-content”>
<?php the_content(); ?>
</div>
<div class=”tag-list”>
<?php the_tags(‘标签:’, ‘, ‘, ”); ?>
</div>
<?php
}
}
?>
以上代码将会在文章内容下方显示类似以下的标签列表:
标签:技术, 编程, WordPress
我们也可以根据需要自定义$before、$sep和$after参数的值来调整标签列表的外观和样式。
在修改和制作Wordpress主题时经常为不知道内置函数而苦恼,而wordpress官方的文档看起来又不是那么方便。所搜集并且整理了一下放这,以备后用。
判断页面函数
is_home() : 是否为主页
is_single() : 是否为内容页(Post)
is_page() : 是否为内容页(Page)
is_category() : 是否为Category/Archive页
is_tag() : 是否为Tag存档页
is_date() : 是否为指定日期存档页
is_year() : 是否为指定年份存档页
is_month() : 是否为指定月份存档页
is_day() : 是否为指定日存档页
is_time() : 是否为指定时间存档页
is_archive() : 是否为存档页
is_search() : 是否为搜索结果页
is_404() : 是否为 “HTTP 404: Not Found” 错误页
is_paged() : 主页/Category/Archive页是否以多页显示
Header部分常用到的PHP函数
<?php bloginfo(’name’); ?> : 博客名称(Title)
<?php bloginfo(’stylesheet_url’); ?> : CSS文件路径
<?php bloginfo(’pingback_url’); ?> : PingBack Url
<?php bloginfo(’template_url’); ?> : 模板文件路径
<?php bloginfo(’version’); ?> : WordPress版本
<?php bloginfo(’atom_url’); ?> : Atom Url
<?php bloginfo(’rss2_url’); ?> : RSS 2.o Url
<?php bloginfo(’url’); ?> : 博客 Url
<?php bloginfo(’html_type’); ?> : 博客网页Html类型
<?php bloginfo(’charset’); ?> : 博客网页编码
<?php bloginfo(’description’); ?> : 博客描述
<?php wp_title(); ?> : 特定内容页(Post/Page)的标题
模板常用的PHP函数及命令
<?php get_header(); ?> : 调用Header模板
<?php get_sidebar(); ?> : 调用Sidebar模板
<?php get_footer(); ?> : 调用Footer模板
<?php the_content(); ?> : 显示内容(Post/Page)
<?php if(have_posts()) : ?> : 检查是否存在Post/Page
<?php while(have_posts()) : the_post(); ?> : 如果存在Post/Page则予以显示
<?php endwhile; ?> : While 结束
<?php endif; ?> : If 结束
<?php the_time(’字符串’) ?> : 显示时间,时间格式由“字符串”参数决定,具体参考PHP手册
<?php comments_popup_link(); ?> : 正文中的留言链接。如果使用 comments_popup_script() ,则留言会在新窗口中打开,反之,则在当前窗口打开
<?php the_title(); ?> : 内容页(Post/Page)标题
<?php the_permalink() ?> : 内容页(Post/Page) Url
<?php the_category(’, ‘) ?> : 特定内容页(Post/Page)所属Category
<?php the_author(); ?> : 作者
<?php the_ID(); ?> : 特定内容页(Post/Page) ID
<?php edit_post_link(); ?> : 如果用户已登录并具有权限,显示编辑链接
<?php get_links_list(); ?> : 显示Blogroll中的链接
<?php comments_template(); ?> : 调用留言/回复模板
<?php wp_list_pages(); ?> : 显示Page列表
<?php wp_list_categories(); ?> : 显示Categories列表
<?php next_post_link(’ %link ‘); ?> : 下一篇文章链接
<?php previous_post_link(’%link’); ?> : 上一篇文章链接
<?php get_calendar(); ?> : 日历
<?php wp_get_archives() ?> : 显示内容存档
<?php posts_nav_link(); ?> : 导航,显示上一篇/下一篇文章链接
<?php include(TEMPLATEPATH . ‘/文件名’); ?> : 嵌入其他文件,可为定制的模板或其他类型文件
其他函数
<?php _e(’Message’); ?> : 输出相应信息
<?php wp_register(); ?> : 显示注册链接
<?php wp_loginout(); ?> : 显示登录/注销链接
<!–next page–> : 将当前内容分页
<!–more–> : 将当前内容截断,以不在主页/目录页显示全部内容
<?php timer_stop(1); ?> : 网页加载时间(秒)
<?php echo get_num_queries(); ?> : 网页加载查询量
/etc/nginx/sites-available/default
server{
listen 443 ssl; #ssl不能少,否则报错
server_name abc.com (域名,下同);
ssl_certificate /home/abc.com/fullchain.pem; #证书位置
ssl_certificate_key /home/abc.com/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers “HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES”;
ssl_prefer_server_ciphers on;
location / {
proxy_pass https://127.0.0.1;
}
}
或者
server{
listen 80;
server_name 127.0.0.1 localhost abc.com;
# rewrite ^(.*)$ https://$host$1 permanent;
location / {
proxy_pass https://127.0.0.1;
}
}
#注意:wordpress需修改 设置》站点地址和wordpress地址 为https
刷新
systemctl reload nginx
参考地址 https://wordpress.org/documentation/article/reset-your-password/
1、登录数据库,找到users结尾的表,如wp_users
2、使用新密码生成MD5 hash 在线生成工具 https://www.miraclesalad.com/webtools/md5.php
或者通过下面的命令生成
python
import hashlib
m = hashlib.md5()
m.update(b’123′)
m.hexdigest()
‘202cb962ac59075b964b07152d234b70’
On Unix/Linux:
1. Create a file called wp.txt, containing nothing but the new password.
2. tr -d ‘\r\n’ < wp.txt | md5sum | tr -d ‘ -‘
3. rm wp.txt
On Mac OS X:
1. Create a file called wp.txt, containing nothing but the new password. Then enter either of the lines below
2. md5 -q ./wp.txt; rm ./wp.txt (If you want the MD5 hash printed out.)
3. md5 -q ./wp.txt | pbcopy; rm ./wp.txt (If you want the MD5 hash copied to the clipboard.)
3 、修改表
update wp_users set user_pass='md5 hash' where id=1;--改成你的id
由于配置了nginx代理后,系统会自动跳转127.0.0.1,导致无法登录,无法通过页面进行修改域名配置。此时可以通过数据库进行直接修改。
登录数据库,找的wp_options表
修改
MariaDB > select * from wp_options where option_name=’home’ or option_name=’siteurl’;
option_id | option_name | option_value | autoload |
2 | siteurl | https://abc.com | on |
3 | home | https://abc.com | on |
修改option_value 为域名即可。
在header.php 添加
<meta name="description" content="
<?php
if ( is_single() ) {
single_post_title('', true);
echo " - 其他说明文字";
} else {
bloginfo('name');
echo " - ";
bloginfo('description');
echo " - 其他说明文字";
}
?>" />
wordpress收到了php升级提醒,由于操作系统比较旧,官方源并未提供php7.4版本,从网上搜了好多教程,一步步做下来,还是遇到了两个报错“您的PHP似乎没有安装运行WordPress所必需的MySQL扩展”、“此站点遇到了致命错误。”,心情顿时奔溃。
多个教程加上踩坑经历整理出安装教程如下
第 0 步:禁用旧版本
a2dismod php7.0
service apache2 restart
注意是 restart 不是start。第一次安装由于没有注意重启导致安装后找不到mysql模块
第 1 步:添加 PHP PPA 存储库
我们将使用 PPA 存储库,其中包含最新的 PHP 构建包。但要先安装依赖包。
sudo apt update
sudo apt -y install software-properties-common
添加存储库:
sudo add-apt-repository ppa:sergey-dryabzhinsky/php74
sudo add-apt-repository ppa:sergey-dryabzhinsky/php7-modules
sudo add-apt-repository ppa:sergey-dryabzhinsky/backports
sudo add-apt-repository ppa:sergey-dryabzhinsky/packages
步骤2:在Ubuntu 18.04/16.04上安装PHP 7.4
使用以下命令在 Ubuntu 上安装 PHP 7.4:
sudo apt -y install php7.4
检查安装的版本:
$ php -v
PHP 7.4.33-SergeyD/6.1 (cli) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
使用以下命令安装其他软件包:
sudo apt install php74p-mod-{mysqlnd,bcmath,bz2,gd,intl,mbstring,zip,json}
注意应该是mysqlnd,mysql不行,许多文档写的是mysql
与Apache相关的PHP配置存储在/etc/php74/apache2/php.ini
安装完确认PHP版本:
$ php –version
PHP 7.4.33-SergeyD/6.1 (cli) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
将 PHP 7.4 与 Apache 结合使用
安装 Apache PHP 模块。
sudo apt install libapache2-mod-php74
安装完执行
a2enmod php74 && service apache2 restart 重要
问题解决:
1、安装完成后启动apache 访问wordpress 报“您的PHP似乎没有安装运行WordPress所必需的MySQL扩展”
php -m 没有mysqli mysqlnd的相关内容
~# php -m
[PHP Modules]
bcmath
bz2
Core
ctype
date
filter
gd
hash
iconv
intl
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Reflection
session
shmop
sockets
SPL
standard
sysvmsg
sysvsem
sysvshm
zip
zlib
[Zend Modules]
或者在wordpress 根目录创建phpinfo.php 文件
<? php phpinfo(); ?>
浏览器访问查看是否有mysql模块
按上面的步骤重装了N遍还是找不到mysql模块,考虑可能是卸载不干净,然后使用彻底删除(见彻底删除php)
最后找到原因竟然是由于没有service apache2 restart导致
2、解决mysql后报“此站点遇到了致命错误。”
开启调试模式
一、开启 WP Debug 模式访问主页显示错误详情Call to undefined function json_decode()
开启 DEBUG 模式显示详细的错误信息。
打开 WordPress 配置文件 wp-config.php,将 WP_DEBUG 这一行修改为如下代码即可:
// 开启WP_DEBUG模式
define( ‘WP_DEBUG’, true);
// 开启DEBUG日志,一定要记得关闭这个日志功能并清理这个日志文件哦,产生的日志文件在: /wp-content/debug.log
define( ‘WP_DEBUG_LOG’, true);
// 显示errors and warnings
define( ‘WP_DEBUG_DISPLAY’, true);
@ini_set( ‘display_errors’, ‘On’);
调试好后,请千万记得关闭 DEBUG 模式,即将上述内容改回:
define( ‘WP_DEBUG’, false);
二、开启json
修改/etc/php74/apache2/php.ini
追加 extension=json
然后重启apache2,正常访问
一、删除php的相关包及配置
sudo apt-get autoremove php7.0* 注意修改为实际要删除版本
二、删除关联
sudo find /etc -name “*php7.0*” |xargs rm -rf
三、清除dept列表
sudo apt purge `dpkg -l | grep php7.0 | awk ‘{print $2}’ |tr “\n” ” “`
四、检查是否卸载干净(无返回就是卸载完成)
dpkg -l | grep php7.0
1、修改site-info.php (template-parts/footer/site-info.php),选择合适的位置添加备案信息
<div class="site-info">
<?php
if ( function_exists( 'the_privacy_policy_link' ) ) {
the_privacy_policy_link( '', '<span role="separator" aria-hidden="true"></span>' );
}
?>
<a href="<?php echo esc_url( __( 'https://wordpress.org/', 'twentyseventeen' ) ); ?>" class="imprint">
<?php
/* translators: %s: WordPress */
printf( __( 'Proudly powered by %s', 'twentyseventeen' ), 'WordPress' );
?>
</a>
<?php if(get_option('zh_cn_l10n_icp_num')){?>
<a href="http://beian.miit.gov.cn/" rel="external nofollow" target="_blank">
<?php echo get_option('zh_cn_l10n_icp_num');?>
</a>
<?php } ?>
</div><!-- .site-info -->
2、修改 /var/www/html/wp-config.php
/**
* zh_CN本地化设置:启用ICP备案号显示
*
* 可在设置→常规中修改。
* 如需禁用,请移除或注释掉本行。
*/
define('WP_ZH_CN_ICP_NUM', true);