标签: wordpress

  • Mysqli和Mysql的几个区别

    Mysqli和Mysql的几个区别

     

    把PHP升级到7以后发现,自己之前做的几个连接数据库的php小网页不能用了。
    原来是php7不支持mysql.dll了。

     

    难得就会那么几句的数据库查,读,写。函数。
    搜了一下两个的区别。把错误都改了。
    其中这一篇小讲解挺好的。
    尤其是【 mysqli_query(资源标识,SQL语句),并且资源标识的参数是放在前面的】 卡了半天,终于解决问题。

     

    Mysqli.dll是一个允许以对象的方式或者过程操作数据库的,它的使用方式也很容易。这里就几个常见的操作和mysql.dll做一个对比。
    1:mysql.dll(可以理解为函数式的方式):

    $conn = mysql_connect(‘localhost’, ‘user’, ‘password’); //连接mysql数据库
    mysql_select_db(‘data_base’); //选择数据库
    $result = mysql_query(‘select * from data_base’);//这里有第二个可选参数,指定打开的连接
    $row = mysql_fetch_row( $result ) ) //为了简单,这里只取一行数据
    echo $row[0]; //输出第一个字段的值

    mysqli也有过程式的方式,只不过开始贯以mysqli的前缀,其他都差不多。
    [highlight color=” background_color=”]如果mysqli以过程式的方式操作的话,有些函数必须指定资源,比如说 mysqli_query(资源标识,SQL语句),并且资源标识的参数是放在前面的,而mysql_query(SQL语句,’可选’)的资源标识是放在后面的,并且可以不指定,它默认是上一个打开的连接或资源。[/highlight]

    2mysqli.dll(对象方式):

    $conn = new mysqli(‘localhost’, ‘user’, ‘password’,’data_base’);
    //这里的连接是new出来的,最后一个参数是直接指定数据库,不用mysql_select_db()了
    //也可以构造时候不指定,然后 $conn -> select_db(‘data_base’)
    $result = $conn -> query( ‘select * from data_base’ );
    $row = $result -> fetch_row(); //取一行数据
    echo row[0]; //输出第一个字段的值

     

    二:mysql_fetch_row(),mysql_fetch_array()

    这两个函数,返回的都是一个数组,区别就是第一个函数返回的数组是只包含值,我们只能$row[0],$row[1],这样以数组下标来读取数据,而mysql_fetch_array()返回的数组既包含第一种,也包含键值对的形式,我们可以这样读取数据,(假如数据库的字段是 username,passwd):
    $row[‘username’], $row[‘passwd’] 而且,如果用($row as $kay => $value)来操作的话,还以直接取得数据库的字段名称。更主要的是mysqli是php5提供的新函数库,(i)表示改进,其执行速度更快.

  • wordpress子主题

    wordpress子主题

     

    https://codex.wordpress.org/zh-cn:%E5%AD%90%E4%B8%BB%E9%A2%98

    WordPress子主题也是一个主题,它继承了另一个主题——父主题——的功能,并允许你对父主题的功能进行修改,或者添加新功能。本文将说明如何创建一个基本的子主题并解释您能用它来干什么。本文将使用 WordPress 3.0 的默认主题 Twenty Ten 作为父主题进行举例说明。

    创建一个子主题是很简单的。创建一个目录,将格式编写正确的 style.css 文件放进去,一个子主题就做成了!只需要对 HTML 和 CSS具有基本的了解,您就可以通过创建一个非常基本的子主题 来对一个父主题的样式和布局进行修改和扩展,而不需要对父主题的文件作任何修改。通过这样的方式,当父主题被更新的时候,您所做的修改就可以保存下来。

     

    目录结构

    子主题放在wp-content/themes目录下属于自己的目录里。下面的结构显示的就是子主题和它的父主题(Twenty Ten)在典型的WordPress目录结构中的位置:

    • public_html
      • wp-content
        • themes (主题存放的目录)
          • twentyten (示例中父主题Twenty Ten的目录)
          • twentyten-child (子主题存放的目录,可以任意命名)
            • style.css (子主题中不可或缺的文件,文件名必需为 style.css)

    这个文件夹里面可以少至只包含一个style.css文件,也可以包含多至一个完整WordPress主题所拥有的文件:

    1. style.css (必需)
    2. functions.php (可选)
    3. Template files (可选)
    4. Other files (可选)

    让我们看看它们是如何起作用的。

    必需的style.css文件

    style.css是一个子主题唯一必须的文件。它的头部提供的信息让WordPress辨认出子主题,并且重写父主题中的style.css文件

    对于任何WordPress主题,头部信息必须位于文件的顶端,唯一的区别就是子主题中的Template:行是必须的,因为它让WordPress知道子主题的父主题是什么。

    下面是一个style.css文件的头部信息的示例:

    /*
    Theme Name:     Twenty Ten Child
    Theme URI:      http: //example.com/
    Description:    Child theme for the Twenty Ten theme 
    Author:         Your name here
    Author URI:     http: //example.com/about/
    Template:       twentyten
    Version:        0.1.0
    */
    

    逐行的简单解释:

    • Theme Name. (必需) 子主题的名称
    • Theme URI. (可选) 子主题的主页。
    • Description. (可选) 子主题的描述。比如:我的第一个子主题,真棒!
    • Author URI. (可选) 作者主页。
    • Author. (optional) 作者的名字。
    • Template. (必需) 父主题的目录名,区别大小写。 注意: 当你更改子主题名字时,要先换成别的主题。
    • Version. (可选) 子主题的版本。比如:0.1,1.0,等。

    */ 这个关闭标记的后面部分,就会按照一个常规的样式表文件一样生效,你可以把你想对WordPress应用的样式规则都写在它的后面。

    要注意的是,子主题的样式表会替换父主题的样式表而生效。(事实上WordPress根本就不会载入父主题的样式表。)所以,如果你想简单地改变父主题中的一些样式和结构——而不是从头开始制作新主题——你必须明确的导入父主题的样式表,然后对它进行修改。下面的例子告诉你如何使用@import规则完成这个。

    一个子主题的范例

    这个例子中的父主题是Twenty Ten,我们喜欢这个主题的几乎每个部分,除了网站标题的颜色,因为我想把它从黑色的改成绿色的。使用子主题的话,只用完成以下三个简单的步骤:

    1. wp-content/themes目录下创建一个新目录,并将它命名为twentyten-child(或其他你喜欢的名称)。
    2. 将下面的代码保存在名为style.css的文件里,并将它放到新建的这个文件夹。
    3. 到WordPress的控制台>主题,然后激活你的新主题:Twenty Ten Child。
    /*
    Theme Name: Twenty Ten Child
    Description: Child theme for the Twenty Ten theme 
    Author: Your name here
    Template: twentyten
    */
    
    @import url("../twentyten/style.css");
    
    #site-title a {
        color: #009900;
    }
    

    下面一步步解释上面代码的作用:

    1. /* 开启子主题的头部信息。
    2. Theme Name: 子主题名称的声明。
    3. Description: 主题的描述(可选,也可被省略)。
    4. Author: 作者名字的声明(可选,也可被省略)。
    5. Template: 声明子主题的父主题,换言之,父主题所在的文件夹的名称,区分大小写。
    6. */子主题头部信息的关闭标记。
    7. 用 @import规则将父主题的样式表调入
    8. #site-title a 定义网站标题的颜色(绿色),覆盖父主题中相同的样式规则。

    注意 @import 规则

    需要注意的是,@import 规则之前没有其他的CSS样式规则,如果你将其他的规则置于它之上,那么它将无效,并且父主题的样式表不会被导入。

    使用 functions.php

    不像style.css,子主题中的functions.php不会覆盖父主题中对应功能,而是将新的功能加入到父主题的functions.php中。(其实它会在父主题文件加载之前先载入。)

    这样,子主题的functions.php提供了一个灵活稳定的方式来修改父主题的功能。如果你想在你的主题里加入一些PHP函数,最快的方式可能是打开functions.php文件然后加入进去。但那样并不灵活:下次你的主题升级更新了,你加入的新功能就会丢失掉。相反地,如果你使用子主题,将functions.php文件放进去,再将你想加入的功能写进这个文件里,那么这个功能同样会工作得很好,并且对于父主题以后的升级更新,子主题中加入的功能也不会受到影响。

    functions.php文件的结构非常简单:将PHP起始标签置于顶部,关闭标签置于底部,它们之间就写上你自己的PHP函数。你可以写得很多,也可以写得很少,反正按你所需。下面的示例是一个基本的functions.php文件的写法,作用是将favicon链接加入到HTML页面的head元素里面。

    <?php
    
    function favicon_link() {
        echo '<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />' . "\n";
    }
    add_action('wp_head', 'favicon_link');
    
    ?>
    

    给主题作者的提示。事实上子主题的functions.php首先加载意味着你的主题的用户功能可插入——即子主题是可替换的——通过有条件地进行声明。例如:

    if (!function_exists('theme_special_nav')) {
        function theme_special_nav() {
            //  Do something.
        }
    }
    

    用这种方式,子主题可以替换父主题中的一个PHP函数,只需要简单地对它再次声明。

    模板文件

    模板文件 在子主题中的表现和style.css一样,它们会覆盖父主题中的相同文件。子主题可以覆盖任何父主题模板中的文件,只需要创建同名文件就行。(注意:index.php在WordPress3.0及以上版本才能被覆盖。)

    同样,这项WordPress的功能允许你修改父主题的样式功能而不用去编辑父主题的文件,并且你的修改能让你在更新父主题后继续保留。

    下面是一些使用模板文件的子主题的例子:

    • 增加一个父主题没有提供的模板(例如:网站地图页面的模板,或者一单栏页面,它们在页面编辑,模板选择里是可用的)
    • 增加一个比父模板更加具体的模板(见模板级别)。(例如:新加的tag.php模板用于按tag归档的文章来代替父主题中通常的archive.php模板。)
    • 替换父主题中的一个模板.(例:使用你自己的home.php来覆盖父主题中的home.php

    其他文件

    除了style.css,functions.php,index.php和home.php,子主题可以使用任何正式主题使用的类型的文件,只要文件被正确链接。打个比方,你可以使用在样式表里或者Javascript文件里链接的图标、图片,或者从functions.php文件中调用出来的额外PHP文件。

  • WordPress 安装-文件夹权限设置

    WordPress 安装-文件夹权限设置


    当你的wordpress遇到以下问题时:

        1. 不能上传图片 
        2. 不能自动安装主题、插件(需要FTP账户) 
        3. 不能自动更新 
        4. 其它任何需要wordpress写文件的问题

    这些问题基本都是一个原因, 你的wordpress目录不属于当前的用户和组, 即web访问的用户没有权限操作wp的一切需要写权限的操作。 解决方法 :
    首先需要你有root权限,SSH登录,进入到wp的安装目录:

    cd /var/www/html/my_wp_blog

    给予所有的写权限:

    chmod 777 wp-content

    接下来给你的博客的文章上传一张图片,WP会生成一个目录, 然后查看是哪个用户创建了文件夹。一般情况下,这个用户名叫“ apache”,也有不少人发现这个用户是“nobody”,就 飘易 本身遇到的问题,我在VPS上安装的是LNmp, 这个用户是“www”。

    进入到wp的wp-content目录,查看该目录下所有文件/ 文件夹的权限,所属用户、用户组:

    cd wp-content
    ls -l

    total 16
    -rw-r–r– 1 root root 30 May 4 2007 index.php
    drwxr-xr-x 3 root root 4096 Feb 10 19:31 plugins
    drwxr-xr-x 5 root root 4096 Mar 23 03:04 themes
    drwxrwxrwx 3 www www 4096 Mar 24 02:08 uploads

    注意上传目录 uploads 是用户 www 创建的。
    接下来把wp-content权限还原到 755::

    cd ..
    chmod 755 wp-content

    下来就是实际修复的命令了, 改变wp所在文件夹的拥有者为刚找到的这个用户www:

    cd ..
    chown -R www:www my_wp_blog

    OK,问题解决了。

  • 第一张图自动生成featured image

    第一张图自动生成featured image

    wordpress第一张图自动生成featured image

    同样是functions.php文件添加函数:

    function autoset_featured() {
    global $post;
    $already_has_thumb = has_post_thumbnail($post->ID);
    if (!$already_has_thumb) {
    $attached_image = get_children ( “post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1” );
    if ($attached_image) {
    foreach ($attached_image as $attachment_id => $attachment) {
    set_post_thumbnail($post->ID, $attachment_id);
    }
    }
    }
    } //end function
    add_action(‘the_post’, ‘autoset_featured’);
    add_action(‘save_post’, ‘autoset_featured’);
    add_action(‘draft_to_publish’, ‘autoset_featured’);
    add_action(‘new_to_publish’, ‘autoset_featured’);
    add_action(‘pending_to_publish’, ‘autoset_featured’);
    add_action(‘future_to_publish’, ‘autoset_featured’);

    20130418-070139.jpg

  • 注册新缩略图尺寸-函数add_image_size

    注册新缩略图尺寸-函数add_image_size

    函数(functions.php)中添加:

    require_once (TEMPLATEPATH . ‘/thumbnails.php’);
    导入新文件thumbnails.php

    感觉没必要加这一句引入文件,直接把下面的内容去掉php框添加进function里就行了。

    thumbnails.php中写入:
    <?php
    // Post Thumbnails
    if ( function_exists( ‘add_theme_support’ ) ) { add_theme_support( ‘post-thumbnails’, array( ‘post’ , ‘page’ ) ); }
    add_image_size( ‘rui-thum’, 625, 190, true );
    ?>
    需要的地方调用:

    <?php the_post_thumbnail(‘rui-thumb’); ?>(这里-content.php中的特色图片)

    最后,刷全服务器的图。生成新规格
    似乎需要用Regenerate Thumbnails插件,给全站缩略图重新生成一遍。
    似乎只要是函数里添加了的新尺寸,都会全站所有图片生成这个尺寸的缩略图。


    导致我现在的媒体库,每一张图都有10个左右的缩略图。可能需要清理一下
    hentai

  • WordPress折腾日志

    WordPress折腾日志

    [highlight color=” background_color=”]OSS插件[/highlight]
    //2017-11-18
    更换老的oss插件,换了新的 Aliyun OSS 插件。
    新oss插件,支持只上传原图,缩略图在调用时在线临时生成。
    通过传递和oss后台设置的缩略图样式名称相同的缩略图名称就行了。
    所以需要在function中注册自己要的缩略图名称。

    if ( function_exists( ‘add_theme_support’ ) ) {
    add_theme_support( ‘post-thumbnails’ );
    add_image_size( ‘rui-Thum’, 960, 540, true );
    add_image_size( ‘wpp-thumbnail’, 50, 50, true );}

    而oss后台添加缩略图大小和水印等设置对应的样式名称。
    但是新插件不知道什么原因,无法传递自命名的缩略图参数给oss。所以自己修改了相应代码。反馈给原作者还未的到回复。

     

     

    [highlight color=” background_color=”]elision_child主题调整[/highlight]
    //2017-11-15
    header.php
    目前只添加了百度统计

    archive.php
    修改了portfolio显示存档标题,错位的问题。
    原句 $title = _e(‘Archive’,’qode’);用了个翻译函数,不知道什么原因会导致文字脱离div。改成直接输出$title = “Archive”;

    blog_*.php
    都是添加文章显示日期没有年份的问题。添加<span class=”year”><?php the_time(‘Y’); ?></span>
    并在样式表里做了简单样式调整

    wordpress源文件修改
    wp-includes/widgets/class-wp-widget-archives.php
    注释掉:<label class=”screen-reader-text” for=”<?php echo esc_attr( $dropdown_id ); ?>”><?php echo $title; ?>
    解决存档widget和主题输出标题重复的问题

    [highlight color=” background_color=”]安装Wordfence和Mail Bank插件[/highlight]
    //2017-11-15
    查看网站日志,发现有非常多的后台登陆尝试。觉得有必要安装一个安全插件。
    另外新系统的sendmail一直配置不好,索性安装SMTP邮件发送。安装Mail Bank,只用一个SMTP功能的话,感觉这个插件有点臃肿,有一个更简洁的插件,但是这个有邮件发送记录功能就勉强保留吧。

     

    [highlight color=” background_color=”]wp slug translate插件引起502问题,卸载[/highlight]
    //2013-11-10
    后台更新菜单会一直超时,然后跳502页面。
    找到原因,卸载wp slug translate

    [highlight color=” background_color=”]注释掉新主题的google Map调用[/highlight]
    //2013-11-09
    注释掉新主题的google Map调用, 删除了functions文件的相关代码

    [highlight color=” background_color=”]自定义文章特色图片[/highlight]
    //2013-04-18
    使用函数-add_image_size,结合“文章第一张图自动设置为特色图 autoset_featured()”,为整个网站生成固定大小的特色图片