分類:程式語法

在wordpress的彙整頁面自訂文章的排列順序

wordpress的彙整頁面(archive.php)預設是以文章發佈的先後順序排列,如果要改變排序的方式,可以在functions.php裡面新增以下敘述:

1
2
3
4
5
6
7
8
9
10
add_action( 'pre_get_posts', 'my_change_sort_order'); 
    function my_change_sort_order($query){
        if(is_archive()):
         //If you wanted it for the archive of a custom post type use: is_post_type_archive( $post_type )
           //Set the order ASC or DESC
           $query->set( 'order', 'ASC' );
           //Set the orderby
           $query->set( 'orderby', 'title' );
        endif;    
    };

這是因為我想要在部落格寫個系列文章,但是我又沒有按照順序先後寫,所以分類彙整的文章頁面就會亂跳文章的順序。

資料來源:WordPress Development

部落格顯示奇怪的頁面?可能是電信業者或瀏覽器搞的鬼!

最近我的部落格有篇文章點閱率很高,但緊接而來的是這篇文章開始顯示奇怪的頁面。例如我明明用桌上電腦瀏覽,卻出現手機頁面,而且切不回來。還有我更新文章內容,網頁卻沒有更新。由於這樣的症狀和快取(cache)應該很有關係,但我卻找不到是誰「快取」了我的網頁。在網路上找了很久,發現最可能的「兇手」就是電信業者,以及我的Chrome瀏覽器。

根據網路情報顯示,部分電信業者會主動快取部分熱門內容,甚至會主動「最佳化」網頁內容,導致使用者看到奇怪的頁面。另外,Chrome瀏覽器有個Google Web Light的功能,可以降低資料傳輸量,但是當然也會對網頁內容作手腳。身為網路內容的提供者,我當然不希望使用者看到不合適的頁面排版。

解決方法如下(參考網頁):
1.在網頁的header區域(或是wordpress的header.php)加入

1
2
3
<?php
    header("Cache-Control: no-transform");
?>

或是
2.在主機資料夾的 .htaccess檔案內加入

1
2
3
<IfModule mod_headers.c>
    Header set Cache-Control "no-transform"
</IfModule>

可以避免網頁被快取或是動手腳。

2016.06.18更新
測試過之後,還是有點狀況,我又做了以下的處置:
1.清除瀏覽器本身的快取
2.把Jetpack的功能都關閉(如果有安裝Jetpack的話)

修改WordPress新增媒體檔案大小2MB的限制(hostmonster)

在Wordpress新增媒體檔案時,有個上傳檔案大小2MB的限制,一般來說是把php.ini裡面的upload_max_filesize加大就可以,然後在http://你的網址/info.php可以檢查。可是我的部落格前面的步驟都正確,卻還是有2MB的限制。經過hostmonster的客服人員一一檢查之後,告訴我要把部落格目錄下的 .htaccess 檔加入以下兩行:

1
2
# Use PHP5.4 as default
AddHandler application/x-httpd-php54 .php

看來是wordpress預設去執行php4,所以沒抓到php.ini設定的緣故?總之問題因此解決了,提供給可能有同樣問題的使用者。

隱藏php的警告訊息

今天在加菲貓漫畫的網站打分數時,出現「warning: Creating default object from empty value…」的訊息,應該不是什麼大麻煩事,程式運作好像也沒問題,但是很討厭,所以先找了個治標的方法暫時隱藏。

在wp-config.php檔案裡面,加一行

1
ini_set( 'display_errors', 0 );

就可以解決。
(聽說要加在前面一點,所以我加在第二行)

Facebook轉貼連結的縮圖不正確

常常在要把部落格文章轉貼到Facebook的時候,系統自動就選擇了縮圖又不能改的時候,就是Facebook已經把這篇文章網址的縮圖放進快取(cache)了,把他清掉應該就可以。如果還能夠直接指定縮圖,那就更萬無一失。

清除Facebook快取:進入https://developers.facebook.com/tools/debug頁面,輸入你要清除快取的網址,按下「debug」按鈕。(資料來源:Fundesigner

直接指定縮圖:在部落格文章中加入

<link href="圖片連結網址" rel="image_src" type="image/jpeg">

(資料來源:阿福

PHP 筆記 – 用curl取代file_get_contents

在安裝布景主題的時候,發現程式中有用到file_get_contents這個指令,如果PHP的設定中沒有把allow_url_fopen這個功能打開,就會出現警示訊息,而且無法讀到外部連結的內容。但是開啟allow_url_fopen這個功能又很危險,因為駭客會把程式碼放在連結中,一旦程式讀取到惡意的程式碼,那網站跟資料庫的內容就有危險了。

所以我在網路上查到有人用curl取代file_get_contents的用法:

$updateUrlContent = file_get_contents($themeUpdateUrl);
改成
$curl = curl_init($themeUpdateUrl);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$updateUrlContent = curl_exec($curl);
curl_close($curl);

相關說明:http://www.christianschenk.org/blog/php-curl-allow-url-fopen/

解碼:http://www.tareeinternet.com/scripts/decrypt.php

WordPress 安裝筆記 – 4.把落落長的文章分頁

2014.01.03更新
現在好像只要在文章裡打

<!--nextpage-->

就可以分頁了!!

參考資料:http://codex.wordpress.org/Styling_Page-Links
——————-

4.把文章分頁
4.1資料來源:艾德的部落格天空
4.2在single.php中,找到

<?php the_content(); ?>

在其下方加入以下敘述:

<div class="link_pages"><?php wp_link_pages(array('before' => '<p><strong>文章分頁: </strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?></div>

4.3打開style.css在檔案最下方加入以下敘述

/* 單篇文章分頁 */
.link_pages {
font: 12px Verdana, Arial, Helvetica, sans-serif;
padding-top: 30px;
padding-bottom: 10px;
margin: 0px;
}
 
.link_pages a {
padding: 2px 6px;
border: solid 1px #ddd;
background: #fff;
text-decoration: none;
}
 
.link_pages a:hover {
color: #ffffff;
background: #D1CAAF;
border-color: #D1CAAF;
text-decoration: none;
}

4.4 在文章中需要分頁的地方輸入<!–nextpage–>

WordPress 安裝筆記 – 3.在文章中加入Facebook按鈕

3.連結FACEBOOK的「讚」和「發送」
3.1 把以下程式碼,加入index.php, archive.php, single.php中

<div id="fb-root"></div>
<script src="http://connect.facebook.net/zh_TW/all.js#appId=118406191585171&amp;xfbml=1"></script>
<fb:like href="<?php the_permalink() ?>" send="true" width="450" show_faces="true" font="" colorscheme="dark"></fb:like>

3.2 相關說明:facebook developer