Javascript 对于所有链接,使用JS或PHP-Wordpress添加css以根据帖子类型切换链接的颜色
我不确定该从哪条路开始,或者什么样的方式才是我想要实现的目标。无论是可以在PHP中实现,还是如何在JS中实现,我们都非常感谢您的帮助 对于在页面上找到的每个链接(可能在小部件、主题模板页面、论坛等中找到),我如何搜索并找到post_类型,然后为特定类型附加特定的链接颜色Javascript 对于所有链接,使用JS或PHP-Wordpress添加css以根据帖子类型切换链接的颜色,javascript,php,jquery,css,wordpress,Javascript,Php,Jquery,Css,Wordpress,我不确定该从哪条路开始,或者什么样的方式才是我想要实现的目标。无论是可以在PHP中实现,还是如何在JS中实现,我们都非常感谢您的帮助 对于在页面上找到的每个链接(可能在小部件、主题模板页面、论坛等中找到),我如何搜索并找到post_类型,然后为特定类型附加特定的链接颜色 例如: 查看侧栏小部件中最近发布的帖子列表 (以下是我可以描述代码意图的最佳方式): 此外,如果在站点的其他任何地方有指向另一篇文章的链接,例如在另一篇文章的正文内容中,甚至在论坛主题中,我需要在该链接中附加一个类。然后我的C
例如: 查看侧栏小部件中最近发布的帖子列表
(以下是我可以描述代码意图的最佳方式): 此外,如果在站点的其他任何地方有指向另一篇文章的链接,例如在另一篇文章的正文内容中,甚至在论坛主题中,我需要在该链接中附加一个类。然后我的CSS可以是类似于
.forum-post-link{color: #006400;}
.project-post-link{color: #00008B;}
.standard-post-link{color:#000;}
这里有一个现成的解决方案。您可能需要稍微调整选择器以避免主站点导航链接
锚定
不难用jQuery解析
标记的href
,如果它们之间有区别,就可以判断它是哪种类型。我不太了解使用WP,但我不确定是否有更有效的方法,或者使用PHP是否更好。如果我的链接是这样构造的:http://myurl/project/project-123
http://myurl/forums/topic/thread-123
http://myurl/post-123
。。解析所有这些链接、将类附加到
标记的最佳方法是什么?如果可能,我们能否获得边框颜色,以便对url中包装在
标记+/post\u type/
中的图片执行相同的操作?另外,我想我会略去帖子,因为我无法将它们与静态页面分开。谢谢php或javascript中的解析原则相同。在javascript中更容易一点,因为您可以将标记视为对象。如果在php中完成,css将作为页面加载参数生效。。我已经修改了you's original example,将包装在“”标记中的任何相同post_类型img的背景设置为样式。那么现在我应该做什么来排除导航链接呢?是否有方法检查该链接的父元素的现有类?下面是我的思考过程,如果代码语言被更正,它将如何“工作”if$(this).parent('li')。parentclass('main-nav')然后不做任何其他操作运行代码来添加类
,我猜这些链接中的大多数都位于主内容容器中。如果有一个公共类或ID显示在每个页面上,那么可以在其中查看…类似于$('.wp\u content a')…
是的,您是正确的。导航菜单的I have没有将类添加到
元素中,而是添加到子菜单或主菜单的父
元素中。还可以使用not()
…类似于$('a')。not('mainNavClass a')。每个(..
感谢您的帮助..现在一切都解决了..这是最终产品,包括附加的更改和一些样式以供演示。
.forum-post-link{color: #006400;}
.project-post-link{color: #00008B;}
.standard-post-link{color:#000;}
/* set according to site domain */
var siteHost = "myurl.com";
var linkClasses = {
/* adjust string values as classes to suit css rules, keys match term to look for in url */
post: 'post',
forum: 'forum',
project: 'project'
}
$('a').each(function () {
var host = this.hostname; /* returns domain.com */
if (host !== siteHost) {
return; /* not a local link, quit here */
}
var newClass = '';
var path = this.pathname; /* returns eveything after http://myurl.com */
if (path && path !== '/') {
/* we only want to look at first part of path*/
var mainPath = path.split('/')[1];
/* now check all the various terms in linkClasses object */
$.each(linkClasses, function (key, value) {
if (mainPath.indexOf(key) > -1) {
newClass = linkClasses[key];
}
});
$(this).addClass(newClass);
} else {
/* is home page link */
$(this).addClass('home'); /* to test home page link finding ability */
}
});