WordPressブログの投稿タイトルからタグ、カテゴリクラスを削除したいです。フロントエンドでは、Wordpressは各記事のタイトルごとに追加のクラスを生成します。
たとえば、 この記事 には、次の図に示すように、これらの記事のタイトルクラス "category-tips-guide" "tag-indian-army"があります。
私はいくつかの余分なクラス(このページで共有されている)を削除するために次のスニペットを試してみました、そしてそれは働きます:
function lsmwp_remove_postclasses($classes, $class, $post_id) {
$classes = array_diff( $classes, array(
'hentry',
'type-' . get_post_type($post_id),
'status-' . get_post_status($post_id),
) );
return $classes;
add_filter('post_class', 'lsmwp_remove_postclasses', 10, 3);
しかし、このコードの問題点は、Tag、Categoryクラスが削除されないことです。
post_classへの参照:
これを試して。
// **** Remove unwanted classes
function remove_classes($classes, $class, $post_id)
{
// Array that holds the undesired classes
$removeClasses = array(
'category-',
'tag-'
);
// Array to store the new class names
$newClasses = array();
foreach ($classes as $_class)
{
// Iterate through the array of undesired classes and
// check if the current $_class name starts with the
// undesired class name
$hasClass = FALSE;
foreach ($removeClasses as $_removeClass)
{
if (strpos($_class, $_removeClass) === 0)
{
$hasClass = TRUE;
break;
}
}
// If $_class does not contain an undesired class name,
// add it to the array of new class names.
if (!$hasClass)
{
$newClasses[] = $_class;
}
}
// Return the array of new class names
return ($newClasses);
}
add_filter('post_class', 'remove_classes', 10, 3);
このフィルタは、望ましくないクラス名の配列($removeClasses
)を宣言します。あなたがしたくないクラス名でそれを展開してください。
次に、関数は渡されたクラスの配列($classes
)を反復処理し、$removeClasses
配列で定義したクラスが含まれているかどうかを確認します。そうでなければ、それを新しい配列($newClasses
)に追加します。そうであれば、スキップします。
最後に、新しい配列$newClasses
を返します。
基本的にそれはあなたが望まないクラスを整理します。そして渡された$classes
配列を操作する代わりに、それは良いクラスだけで新しいものを作成して代わりにそれを返します。
私はまだテストしていません。私はWordPressのインストールを今ここで利用することはできません。 post_class
が正しいフィルターではないかもしれないので、それはうまくいかないかもしれません。
$classes
とtag-
で始まる要素もすべてcategory-
から削除する必要があります。難しいのは、type-
とstatus-
以外では、それらのインスタンスが複数存在する可能性があることです。
そのため、配列をループ処理して、これらの文字列で始まるインスタンスをすべて削除する必要があります。
foreach ($classes as $class) {
if (substr ($class, 0, 4) === "tag-") $class = '';
if (substr ($class, 0, 8) === "category-") $class = '';
}