web-dev-qa-db-ja.com

WordPressカテゴリのリンクリストを取得する方法?

私は私のWordPressブログカテゴリ用のカスタムサイトマップを作成しようとしています。そのために私は私のfunctions.phpファイルに以下のコードを追加して保存すると私のブログは白くなります。何も表示されていません。私はFTPを通過することによってこのコードを削除しました、それからすべては再び元気になりました。

今度はこのコードを作成して使用したいと思います。今すぐ誰でもこのコードを修正するのを手伝ってくれる?

/* ------------------------------------------------------------------------- *
 *  Custom Dynamic XML Sitemap Generator For Categories
/* ------------------------------------------------------------------------- */
add_action("publish_post", "cat_create_sitemap");
add_action("publish_page", "cat_create_sitemap");
function cat_create_sitemap() {
  $categoriesForSitemap = get_categories(array(
    'hide_empty' => 0, 
    depth => 0, 
    'hierarchical' => false
  ));

  $sitemap = '<?xml version="1.0" encoding="UTF-8"?>';
  $sitemap .= '<?xml-stylesheet type="text/xsl" href="sitemap-style.xsl"?>';
  $sitemap .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

  foreach($categoriesForSitemap as $category) {
    setup_postdata($category);
    $categorydate = explode(" ", $category->category_modified);
    $sitemap .= '<url>'.
      '<loc>'. get_permalink($category->ID) .'</loc>'.
      '<priority>1</priority>'.
      '<lastmod>'. $categorydate[0] .'</lastmod>'.
      '<changefreq>daily</changefreq>'.
    '</url>';
  }
  $sitemap .= '</urlset>';
  $fp = fopen(ABSPATH . "custom-cat-sitemap.xml", 'w');
  fwrite($fp, $sitemap);
  fclose($fp);
}
2
Muhammad Hassan

私が見る最初のエラーは構文エラーです:

depth => 0

あるべき

"depth" => 0

2番目のエラーは、投稿オブジェクトのようにカテゴリオブジェクトを使用しているということです。これらの行はどれも動作しません。

設定する投稿データはありません。この行を削除してください。

setup_postdata($category);

カテゴリオブジェクトはcategory_modifiedプロパティを持ちません。たぶん、あなたはカテゴリの最後の公開された記事の日付が必要です(これは別の質問です)?

//Not valid property
$category->category_modified;

get_permalink()は投稿用です。カテゴリの代わりにget_category_link()を使用してください。また、$ category-> IDはカテゴリオブジェクトの有効なプロパティではありません。代わりに$ category-> term_idを使用してください。

//Incorrect
get_permalink($category->ID);

//Correct
get_category_link($category->term_id);
3
cybmeta